对于使用 JDK 的 HTTP URL 连接的 Groovy 脚本,在启动该进程时提供代理:

groovy -Dhttp.proxyHost=proxy.example -Dhttp.proxyPort=8080 fetch.groovy

一个小的 fetch.groovy 随后可以读取一个文本资源:

def url = new URL('http://example.com/')
println url.getText(connectTimeout: 5000, readTimeout: 10000)

该端点是示例;对于这次公开的 HTTP 文本抓取,请用 HTTP 代理列表中未经验证的候选替换它。主机属性包含主机名,端口则是独立的属性。若目标是 HTTPS,请为承载它的端点配置 https.proxyHost 和 https.proxyPort。

-D 定义的是 JVM 系统属性,而不是 shell 环境变量的赋值。请把选项放在运行这个脚本的 Groovy 调用上。另一次 IDE 启动或某个服务可以用不同的值启动另一个进程。

getText 把响应收集成字符串。它适合小规模的文本抓取;大规模下载应当采用流式处理,而不是把整个结果留在内存里。

相关文章