我相信我的爬虫被阻止了,但我可以通过普通浏览器访问该网站,他们怎么能这样做? [关闭]

Posted

技术标签:

【中文标题】我相信我的爬虫被阻止了,但我可以通过普通浏览器访问该网站,他们怎么能这样做? [关闭]【英文标题】:I believe my scraper got blocked, but I can access the website via a regular browser, how can they do this? [closed] 【发布时间】:2016-10-17 02:21:59 【问题描述】:

我最近使用 requests 和 BeautifulSoup 编写了一个相当简单的爬虫。刮板一直运行良好,直到有一天,我运行它并收到“对等连接重置,错误 54”。尽管有很多关于绕过错误 54 的问题,但这并不是我想知道的。

为了测试是否阻止了我的特定 IP 或计算机,我在不同的计算机和 IP 地址上运行了代码,它运行良好。然而,令人不安的是,即使在我的旧机器上,我也可以在普通浏览器上完美地访问该网站。

我想知道该网站如何能够在不完全阻止我的 IP 的情况下做到这一点,以及是否有人有任何提示可以在将来避免这种情况。

【问题讨论】:

我投票结束这个问题作为题外话,因为这个网站是针对特定的编程问题而不是解决网络安全措施和/或帮助提交未经授权的网络扫描的提示。 网站是什么?你读过他们的 tos 吗? google.com/… 有很多方法可以做到这一点,从用户代理标头到更多涉及的客户端指纹和时序分析。要弄清楚任何特定站点使用哪种方法将是纯粹的猜测,并且这样做甚至不知道这是哪个站点(以及它们是否支持任何安全网关服务,如 CloudFlare)......极端的猜测。 很抱歉没有提供很多细节。我要求得到一些指示。感谢那些给予他们的人。 【参考方案1】:

我想知道该网站如何能够在不完全阻止我的 IP 的情况下做到这一点......

通过检查有关您的请求的各种方式,有些是直截了当的,有些是晦涩难懂的。直截了当的项目包括用户代理标头、cookie、动态 URL 的正确拼写。

神秘项目包括您的 IP 地址、您的请求时间、相关请求的频率、其他标头的内容。

...如果有人有任何提示可以在将来避免这种情况。

是的。联系相关网站的所有者,并配合他们制定的任何限制。检查您使用其网站的许可条款(如果是一般公共许可,通常称为“服务条款”)。确保您仅在这些条款范围内运营。

如果网站数据可通过 API 获得,并且您的使用符合 API 的许可条款,请使用它而不是屏幕抓取。数据的格式将更加一致,您的代码将运行得更快,并且您对网站所有者的负担(或威胁)将更少。

【讨论】:

感谢 Rob 抽出时间回答我的问题。我知道这很笼统,但我现在只是在学习绳索,所以我对刮擦的理解相当笼统。我会接受你的回答给你你的分数,因为它可以帮助我开始。再次感谢!

以上是关于我相信我的爬虫被阻止了,但我可以通过普通浏览器访问该网站,他们怎么能这样做? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

缺少访问控制允许来源[重复]

测试是不是可以从 Web 浏览器访问 URL,即确保没有被代理服务器阻止

端口 80 被 ISP 阻止 [关闭]

Laravel + Angular 从外部网络访问被 CORS 阻止

在 GWT 应用程序中打开新的浏览器窗口被阻止

阻止 IE6 访问者