繁体   English   中英

Java网络爬虫看到验证码

[英]Java web-scraper sees captcha

我已经使用JSoup为Java的Google Scholar创建了一个网络刮板。 刮板搜索Scholar寻找DOI,然后找到本文的引文。 研究需要这些数据。

但是,刮板仅适用于第一个请求。 ..之后,刮板在Scholar网站上遇到了一个验证码。

但是,当我在浏览器(Chrome)中打开网站时,Google Scholar将正常打开。

这怎么可能? 所有请求都来自相同的IP地址! 到目前为止,我已经尝试了以下选项:

  • 为请求选择一个随机用户代理(从5个用户代理的列表中)
  • 请求之间的随机延迟介于5到50秒之间
  • 使用TOR代理。 但是,几乎所有终端节点都已被Google阻止

当我分析Chrome对Scholar的请求时,我发现Cookie与某些会话ID一起使用。 也许这就是为什么Chrome请求未被阻止的原因。 是否可以将此Cookie用于通过JSoup发出的请求?

谢谢!

我想到了三件事:

  1. 您不是在请求之间保存cookie。 您的第一个请求应保存cookie并将其传递给服务器以用于下一个请求(设置Referer标头也不会受到伤害)。 这里有一个例子在这里
  2. 如果Google棘手,他们会看到您的第一个请求没有在页面上加载任何css / js / images。 这肯定表明您是机器人。
  3. 载入Javascript后,它就会在页面中执行某些操作。

我认为第一个是最可能的选择。 您应该尝试将Chrome在请求中看到的许多标题复制到Java代码中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM