好不容易把代理验证跑通了,IP 也能连上,心里刚松口气,想着这次总该能顺利爬数据了。结果代码一运行,满屏不是 403 就是直接超时,那滋味真跟手里攥着配好的钥匙,却死活打不开门一样,又气又憋屈。明明钥匙没问题,门锁也没坏,到底是哪出了问题?
其实代理ip验证成功,顶多说明网络链路是通的,不代表你就能顺利访问目标内容。这就跟进高档小区一个道理,保安认得你,放你进了大门,这就是代理验证过了。可你要去的那户人家,门口装着智能猫眼,人家一看你长相不对,或者敲门的方式太暴力,照样不会给你开门。

最容易踩的坑,还是代理 IP 本身的质量。尤其是那些免费代理,早就上了不少网站的黑名单了。这些 IP 之前大概率被人用来搞过攻击、疯狂爬取,网站一看到这些 IP 段的请求,看都不看直接返回 403 拒绝。就好比小区里有些门牌号早就被标上 “推销人员禁止入内”,你就算进了大门,走到门前,门也不会开。就算是付费代理也不一定管用,要是单个 IP 并发太高,或者 IP 池里就那几个地址来回换,网站反爬很容易根据请求频率和行为把你揪出来。
过了代理这一关,还得看你 “扮相” 够不够像真人。现在很多网站的防护都升级了,会检测 TLS 握手、JA3 指纹,这是浏览器和服务器建立加密连接的底层流程。你用 Python 的 requests 发请求,就算加了代理、改了 UA,底层握手的特征和真实浏览器还是不一样。网站一检测,发现 IP 看着正常,但打招呼的方式完全是机器人,直接就把你拦住。就像你挂着访客牌,可走路动作僵硬得像机器人,人家透过猫眼一看,肯定不敢开门。
还有个特别隐蔽的问题,就是 Cookie 和会话状态。你测代理连通性的时候,一般都是裸请求,不带 Cookie。可真正爬数据时,很多网站都需要合法的会话状态。要是爬虫没管好 Cookie,或者带的 Cookie 过期了,网站就会把你当成未授权访客,直接 403 拒掉。有些网站还会在访问过程中动态更新 Cookie,爬虫没跟上节奏的话,前面能爬几页,翻到后面就突然失效。
再说说访问频率,这问题说了无数遍,可还是有人总翻车。不少人觉得用上代理就可以肆无忌惮高并发请求,同一个 IP 一秒钟刷几十次,在网站眼里这就是标准的机器行为,正常人哪能这么快、这么规律地浏览网页?触发限流后,要么返回 429 请求过多,要么直接 403 封 IP。就算 IP 池很大,切换 IP 的节奏太死板,比如固定 30 秒换一个,这种机械规律照样会被识别。
除此之外,还有页面加载逻辑的问题。有时候代理正常、请求头齐全,返回状态码也是 200,可解析出来的 HTML 里就是没有数据。大概率是网站改成了异步加载,数据靠后面的 Ajax 请求动态获取,你的爬虫只抓到了一个空页面,自然什么都拿不到。这就像你进了屋子,却发现里面全是锁着的抽屉,你没有钥匙根本打不开。
所以说,代理验证通过只是最基础的第一步。想顺利爬取数据,关键是要从网络层到应用层,完整模拟出真实用户的行为:干净的 IP、完整的浏览器指纹、正常的 Cookie 会话、自然的访问节奏,还要能处理动态加载的数据。只要任何一个环节露馅,网站都会毫不留情地把你拒之门外。遇到问题别死磕代理,顺着整个请求流程从头捋一遍,多半能找到真正卡壳的地方。
