我一直在使用jsoup connect方法获取某些网站的DOM一段时间(制作我的个人机器人,我每天向这些网站发出20-30个请求)。即我可以打开并浏览该网站,但我的Java程序从今天起无法访问它,我注意到的一件事就是CloudFlare正在检查我的浏览器(防止DDoS攻击)。我的连接代码如下所示
doc = Jsoup.connect(url)
.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")
.timeout(0)
.get();
现在我收到错误503.我尝试将userAgent更改为" Mozzila / 5.0"而且我得到错误403.对我没有任何意义,但我怀疑是在Cloudflare系统上。
编辑:
我发现CloudFlare保护"我受到攻击"要求浏览器启用JavaScript和Cookie,并在5秒后授予对网站的访问权限。如何使用我的Java程序重新创建这种情况?
答案 0 :(得分:1)
每个网站都有其限制,以避免崩溃或攻击。当我想访问github数据时,它发生在我身上。我没有在你的代码中看到任何身份验证(你可以隐藏它,我可以理解)。有时它们会以更高的频率为您提供更高的访问限制。所以尝试给认证是好的。
另一个问题是您将超时设置为0。 的 ConnectionTimeout = 0 强> 是不好的,让它像30秒一样合理。