【问题标题】:Any way to enable web scraping through a firewall?有什么方法可以通过防火墙启用网络抓取?
【发布时间】:2013-02-04 08:56:20
【问题描述】:

我在公司网络上尝试用 Java 编写 JSoup 网络爬虫,但我似乎无法连接。

为了进行测试,当我运行以下代码时,它给了我一个 java.netConnectException: Connection denied。

    Socket socket = null;
    try {
        socket = new Socket("google.com", 80)
        System.out.println("it works!");
    } finally {            
        if (socket != null) try { socket.close(); } catch(IOException e) {}
    }

作为记录,我的 JSoup 代码如下所示:

    Connection con = Jsoup.connect("http://en.wikipedia.org/wiki/Main_Page");
    Document doc = con.get();

当我单独运行它时,它给了我一个 TimeOut 异常(即使在给它一个慷慨的超时之后)。我应该怎么做才能让它在我的网络中工作?

【问题讨论】:

  • 你试过用谷歌搜索 JSoup 和代理吗?
  • 让我们从头开始。您是否可以在计算机上直接访问 Internet 或使用公司网络代理?
  • 不,端口 80 在公司环境中不会完全开放。在 Internet Explorer 中,转到工具 -> Internet 选项。左键单击连接选项卡。左键单击 LAN 设置按钮。在 LAN 设置对话框的底部,将是您需要放入 Java 代码的代理信息。

标签: java sockets web-scraping jsoup


【解决方案1】:

我找到了解决办法:I had to simply find my proxy and set it in my code.

// if you use https, set it here too
System.setProperty("http.proxyHost", "<proxyip>"); // set proxy server
System.setProperty("http.proxyPort", "<proxyport>"); // set proxy port

Document doc = Jsoup.connect("http://your.url.here").get(); // Jsoup now connects via proxy

另外,您可能需要set the user agent。我在那里留下了“推荐人”代码,尽管我认为在大多数情况下没有必要。请注意,userAgent 是在您访问的 Web 服务器歧视机器的情况下组成的。

doc = Jsoup.connect("https://www.facebook.com/")
  .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
  .referrer("http://www.google.com")
  .get();

【讨论】:

    猜你喜欢
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 2018-11-08
    • 2014-09-10
    • 2022-08-12
    • 2013-03-02
    相关资源
    最近更新 更多