爬网对于公共数据收集至关重要。 这些数据后来用于改进业务和营销策略。 对于那些不知道如何在不被阻止的情况下抓取网站的人来说,在抓取数据时被列入黑名单是一个常见问题。 我们收集了一份在爬网时保持匿名的提示列表。
首先,网页检测 网络爬虫 和工具,检查他们的 IP 地址、用户代理、浏览器参数和一般行为。 如果该网站发现它可疑,您会收到验证码。 然后最终,由于检测到您的爬虫,您的请求被阻止。
1.让爬行变慢

IP 地址在特定时间可以在网站上执行的操作数量有限。 当一个人访问一个网页时,速度可以理解为低于网络爬虫时发生的速度。 为了降低被阻止的风险,您应该放慢爬行速度。 例如,您可以在请求之间添加随机中断或在执行特定操作之前启动等待命令。
网页抓取 机器人获取数据的速度非常快,但站点很容易检测到您的爬虫,因为人类无法快速浏览。 你爬得越快,对每个人来说就越糟糕。 如果一个网站收到太多请求,那么它可以处理它可能会变得反应迟钝。 通过模仿人类行为让您的蜘蛛看起来真实。 在请求之间放置一些随机的程序化睡眠调用,在抓取少量页面后添加一些延迟,并尽可能选择最少的并发请求数。 理想情况下,在点击之间放置 10-20 秒的延迟,不要给网站带来太多负载,从而很好地对待网站。
2.避免图像抓取

图像是数据量大的对象,通常可以受到版权保护。 它不仅需要额外的带宽和存储空间,而且侵犯他人权利的风险也更高。
此外,它们通常隐藏在“延迟加载”之后的 JavaScript 元素中,这将显着增加数据获取过程的复杂性并减慢网络爬虫本身的速度。 因此,您也必须避免使用 JavaScript。
3. 使用抓取 API
Crawlbase(以前的 ProxyCrawl)的 Crawling API 通过自动化大多数引起头痛的事情,让您高枕无忧。 您可以自己做所有事情,也可以使用 API 进行尽可能多的爬取。 我们的 Crawling API 可保护您的网络爬虫免受请求阻塞、代理故障、IP 泄漏、浏览器崩溃和验证码的影响。
现在,我们将了解如何使用 Python 3 来抓取 Walmart。 要开始运行脚本,我们首先需要收集一些信息,例如:
- 抓取 API URL
https://api.crawlbase.com
- 您的 Crawlbase(以前的 ProxyCrawl)令牌
- 沃尔玛 URL(在我们的案例中为清仓大甩卖)
然后我们需要导入一些相关的模块。
1 | 起 urllib.请求 进口 打开网址 |
现在我们已经导入了模块,甚至收集了相关信息,我们需要传递用于抓取的 URL,带有一些参数(如令牌)的抓取 API 来满足要求。
1 | 网址 = 报价加号('https://www.walmart.com/browse/home/4044?cat_id=4044&facet=special_offers%3AClearance') |
完整的代码看起来像这样,我们将格式化最终结果看起来很漂亮。
1 | 起 urllib.请求 进口 打开网址 |
当您按下 Control + F10 键(在 Windows 上)时,最终输出将显示在输出面板中。

我们还有一个可用的 Python 库 你可以用在。
4. 尊重 Robots.txt 文件
首先你要了解什么是robots.txt文件,它的机制是什么。 robots.txt 文件位于网站的根目录中。 它设置了抓取网站的哪些部分不应该被抓取的规则,它可以被抓取的频率。 有些网站不允许任何人抓取它们。 因此,基本上,它会告诉搜索引擎爬虫,爬虫可以或不可以从您的网站请求哪些页面或文件。 被编程为遵循 robots.txt 上设置的规则的机器人将默认遵循这些规则并检索数据。 这主要用于避免任何网站的请求超载。
例如,此 robots.txt 指示所有搜索引擎机器人不要为网站的任何内容编制索引。 这是通过禁止您网站的根 / 来定义的。
用户代理:*
禁止:/
您仍然可以找到 robots.txt 文件以仅在某些情况下允许 Bingbot 抓取数据。 相比之下,所有其他机器人都被禁止提取任何数据。 尽管如此,由于这是由网站所有者决定的,因此您无法避免此规则。
您还应该注意,当网站所有者找不到停止在其网站上爬行的方法时,他们只是对所有链接实施验证码和/或文本消息验证,这肯定会在访问链接时打扰任何人或机器人。 但是,如果您的理由是合法的,您仍然可以继续这样做。
5.提防蜜罐陷阱

已安装的蜜罐是 HTML 代码中的链接。 这些链接对普通用户是不可见的,但网络爬虫可以检测到它们。 蜜罐用于识别和阻止网络爬虫,因为只有机器人会跟随该链接。 蜜罐是为引诱黑客并检测任何试图获取信息的黑客攻击而设置的系统。
一些检测蜘蛛的蜜罐链接将具有 CSS 样式“显示:无”或伪装的颜色以与页面的背景颜色混合。 这种检测显然并不容易,需要大量的编程工作才能以正确的方式完成; 这就是为什么这种技术不常用的原因。
6. 避免会话 URL 陷阱

会话仅用于存储此次访问的访问者数据。 大多数框架使用会话。 每个会话通常都有一个唯一的 id(示例中的 12345zxcv:“https://www.example.com/?session=12345zxcv”)。 众所周知,会话数据存储在 cookie 中。 如果会话数据由于某些原因(例如服务器配置错误)而未存储在 cookie 中,则会出现会话 ID。
来自爬虫的每次访问都构成一次“新访问”并获得一个新的会话 ID。 抓取两次的同一个 URL 将获得 2 个不同的会话 ID 和 2 个不同的 URL。 每次爬虫爬取页面时,所有具有新会话 ID 的链接都会看起来像新页面,从而导致准备爬取的 URL 爆炸式增长。
要避免会话 URL 陷阱,只需访问您的网站,禁用 cookie,然后单击几个链接。 如果 URL 中出现会话 ID,则您很容易受到会话 URL 陷阱的攻击。 这 营销追踪器 页面搜索引擎优化爬虫是为了检测这个爬虫陷阱而构建的。 只需检查您的抓取索引并过滤“会话”即可。
7.检查网站是否改变布局

一些网站非常了解抓取工具,并且可能有点难以抓取,因为它们可能有多种布局。 例如,某些页面集的布局可能与其余页面显示的布局不同。 为避免这种情况,您可能有不同的路径或 CSS 选择器来抓取数据。 或者如何在代码中添加条件以不同方式抓取这些页面。
8. 网站如何检测和阻止网页抓取?
网站使用不同的技术来区分网络蜘蛛/爬虫和真人。 其中一些机制具体如下:
1.异常高的下载率/流量: 特别是在短时间内来自单个客户端/或 IP 地址。
2. 以相同浏览模式完成的重复性任务: 基于人类用户不会每次都执行重复性任务的假设。
3. 检查您的浏览器是否真实: 一个简单的检查就是尝试执行 JavaScript。 更智能的工具可以通过检查您的 GPU 和 CPU 来确保您来自真正的浏览器,从而更加努力。
4. 蜜罐检测: 蜜罐通常是普通用户看不到的链接,但只有蜘蛛才能看到。 当网络蜘蛛/爬虫试图访问链接时,警报就会触发。
您可能需要花一些时间预先调查网站的抓取风险,以避免触发任何反抓取机制并相应地构建蜘蛛机器人。
9. 使用验证码解决 API:
当您开始大规模抓取网站时,您最终会被阻止。 您将开始在常规网页之前看到 CAPTCHA 页面。 Anticaptcha 或 2Captcha 等服务可以绕过这些限制。
如果您需要抓取使用 Captcha 的网站,最好寻找验证码服务,因为它们比自定义验证码求解器相对便宜,这在执行大规模抓取时很有用。
10.避免在登录表单后面刮擦:
Facebook、Instagram 和 LinkedIn 等私人平台的登录表单发送登录信息或 cookie 以及查看页面的请求,这反过来又使目标网站更容易查看来自同一地址的传入请求。 抓取工具必须对每个请求执行此操作,这可能会带走您的凭据或阻止您的帐户,从而导致网络抓取工作被阻止。
建议避免使用登录表单抓取网站,以免轻易被阻止。 但是避免这种情况的一种方法是在需要进行身份验证以获取目标数据时使用浏览器模仿类似人类的行为。
你怎么知道一个网站是否禁止或阻止了你?

以下迹象表明您被阻止从某个网站抓取:
- 频繁的 HTTP 404、301 或 50x 错误响应
- 验证码页面
- 内容交付异常延迟
要检查的一些常见错误响应是: - 503服务不可用
- 429 - 请求过多
- 408 - 请求超时
- 403 - 请求的资源被禁止
- 404 - 未找到
- 401 - 未经授权的客户端
- 301 - 永久移动
总结

希望您通过阅读本文学到了在爬网时保持匿名的新技巧。 我必须提醒您继续尊重 robots.txt 文件。 此外,尽量不要向较小的网站发出大量请求。 或者,您可以使用 Crawlbase(以前的 ProxyCrawl)的 Scraper API 这决定了所有这一切都不会浪费您的宝贵时间,并专注于按时并以可扩展的方式完成工作。