通过代理做一次简短的 Groovy 抓取
把代理属性传给执行 URL 下载的 Groovy 进程,并为连接和读取设置有限的等待时间。
对于使用 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 把响应收集成字符串。它适合小规模的文本抓取;大规模下载应当采用流式处理,而不是把整个结果留在内存里。