【问题标题】:How to use Http, Socks4 and Socks5 proxies in java?如何在 java 中使用 Http、Socks4 和 Socks5 代理?
【发布时间】:2023-04-05 03:10:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java proxy httprequest


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 您的回答非常有用。我也已经使用过 Selenium。你是对的,Selenium 比 HtmlUnit 慢,所以通过替换 HtmlUnit 来使用 Selenium 是没有问题的。两天前我也尝试过 HttpUnit,但我为 HttpUnit 下载的 .jar 文件也包含各种链接库,所以当我尝试运行该程序时,有很多引用其他库的引用错误。我下载了其中一些,但无法全部下载,所以我停止使用它。
    • 使用 Maven 或 Ivy,设置您的项目(使用依赖项)将非常容易。如果您不使用这些工具之一,则此处提到了依赖项,例如:mvnrepository.com/artifact/httpunit/httpunit/1.6.2
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-10-13
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-03
      相关资源
      最近更新 更多