昨天,一客户告诉我,使用我们的代理IP都提示“访问过于频繁,请输入验证码”,问是不是代理IP无效,都被封了。我通过远程协助,找到客户认为无效的IP,通过浏览器设置代理IP测试访问网站,发现可以正常访问该目标网站,证明代理IP并没有被封,那么,这是怎么一回事呢?
简单来讲,该客户通过代码(python)向服务器发送请求与通过浏览器向服务器发送的请求不一样,所以浏览器可以通过,而代码无法通过。我们可以通过浏览器访问目标网站抓包测试,可以看到浏览器访问服务器资源的流程和数据流向。对比代码中的访问流程和数据流向,进行修改、优化,最终解决问题。
如果使用python中的requests.Session()来获取一个对象或者指定了headers中的Cookie字段来发送请求时,那么需要注意一点,这两种方法,都会被服务器认为你的多次请求来自同一个客户端,自然就会认为你访问过于频繁,向客户端弹出验证码(服务器端通过Session确认某一个用户,客户端通过Cookie[中的某一条]告诉服务器自己是某Session对应的用户)。所以,你可以尝试切换一个新的requests.Session()对象来发送请求。
在使用代理IP进行爬虫工作的过程中,我们总会遇到一些不可预料的问题,但是,不要心急,不要悲伤,保持冷静,沉着应对,找出其中的问题,抽丝剥茧,最后解决问题。兔子IP代理提供国内最优质的IP代理服务。