我相信我的抓取工具被屏蔽了,但我可以通过普通浏览器访问该网站,他们是怎么做到的?

I believe my scraper got blocked, but I can access the website via a regular browser, how can they do this?

我最近使用请求和 BeautifulSoup 编写了一个相当简单的抓取工具。直到有一天,我 运行 收到了一个 "Connection reset by peer, Error 54"尽管有很多关于绕过 Error 54 的问题,但这不是我想知道的。

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

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

I am wondering both how the website was able to do this without blocking my IP outright and ...

通过检查关于您的请求的各种方式,一些 straight-forward 和一些神秘的。 Straight-forward 项包括 user-agent headers、cookie、动态 URL 的正确拼写。

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

... if anyone has any tips for avoiding this in the future.

是的。联系相关网站的所有者并配合他们实施的任何限制。检查您使用其网站的许可条款(如果是一般 public 许可,则通常称为 "Terms of Service")。确保您仅在这些条款范围内运营。

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