5

我想对网站进行屏幕抓取,为此我想使用 Http、Socks4 和 Sock5 代理。所以我的问题如下:

  1. 是否可以通过 Java 使用这些代理而不使用任何其他外部 API?例如,是否可以通过这些代理通过HttpURLConnection发送请求?

  2. 如果不可能,那么我可以使用哪些其他外部 API?

  3. 我是通过使用HtmlUnit提供的无头浏览器来完成的,但即使是简单的网页也需要时间加载,所以您能否建议我提供其他 API(如果有)提供快速加载网页的无头浏览器。我不想打开包含大量 AJAX 或 Javascript 代码的网页。我只需要通过无头浏览器单击表单按钮。

4

2 回答 2

3

是否可以通过 Java 使用这些代理而不使用任何其他外部 API?例如,是否可以HttpURLConnection通过这些代理发送请求?

是的,您可以通过使用(全局)系统属性、使用Proxy类或使用ProxySelector. 后面的两个选项自 Java 5 起就可用,并且更加灵活。查看jarnbjo 提到的Java Networking and Proxies了解所有详细信息。

我是通过使用 HtmlUnit 提供的无头浏览器来完成的,但即使是简单的网页也需要时间加载,所以您能否建议我提供其他 API(如果有)提供快速加载网页的无头浏览器。我不想打开包含大量 AJAX 或 Javascript 代码的网页。我只需要通过无头浏览器单击表单按钮。

不幸的是,我能想到的第一个替代方案是基于 HtmlUnit(如JWebUnitWebTest)或更慢(SeleniumWebDriver - 您可以在无头模式下运行)。但是,如果您不需要高级 JavaScript 支持,也许您可​​以尝试HttpUnit 。

于 2010-01-16T17:20:48.740 回答
1

是的,这是可能的。您可以在此处找到不同网络代理的配置选项。

于 2010-01-16T16:14:10.007 回答