如何通过防火墙解析网页

时间:2010-12-25 00:16:43

标签: java jsoup

我正在尝试使用此Jsoup代码解析网址:

Document doc = Jsoup.connect("http://www.*url*.com").get();
String title = doc.title();
System.out.println("title: "+title);

我总是得到以下错误

Exception in thread "main" java.io.IOException: 403 error loading URL http://www.*url*.com
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:327)
    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:130)
    at org.jsoup.helper.HttpConnection.get(HttpConnection.java:119)
    at HttpRequestPoster.main(HttpRequestPoster.java:151)

我的电脑是网络的成员,由kerio winroute防火墙控制。在互联网连接之前,我们从网络浏览器连接到防火墙。原因一定是这个。我该如何解析网址?

2 个答案:

答案 0 :(得分:2)

设置用户代理对我有用。

Document document = Jsoup.connect(url).header("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2").get();

答案 1 :(得分:1)

HTTP error 403仅表示Forbidden

  

服务器理解请求,但拒绝履行请求。

换句话说,服务器端根据请求特定信息决定不允许请求者接收响应。这可能有很多原因:请求标头中缺少特定信息,不允许使用IP地址,不允许用户代理,等等。

您最诚实的赌注是联系相关网站的管理员,要求澄清和许可。您还可以使用真实的Web浏览器并使用像Firebug或Fiddler2这样的HTTP流量跟踪器来跟踪请求/响应详细信息。 Jsoup的HttpConnection class至少提供了几种方法来在必要时设置标题,cookie和/或用户代理。