python爬虫ip被封怎么办?

用python写的爬虫,设置了headers,包括host和useragent,设置了cookies,访问的结果是“访问过于频繁,请输入验证码”,但是用浏览器访问怎么刷新都没有问题。这个时候大致可以判定你被反爬虫锁定,那怎样解决,你可能不太了解。

简单来讲,通过代码向服务器发送的请求与浏览器向服务器发送的请求不一样,所以你可以通过浏览器获取数据,但是无法通过代码。
首先建议选中Network一栏之后重新通过浏览器向服务器发送一次请求,然后,你就可以看到你刚才通过浏览器访问服务器资源的流程和数据流向。其中,数据流向包括:浏览器向服务器发送的请求头浏览器向服务器发送的请求体(可能)服务器向浏览器发送的重定向地址及浏览器重新向新的地址发送请求服务器返回的响应头服务器返回的响应体—你面临的问题很可能是在模拟浏览器发送请求这一步
检查代码,修复之。至于解决方案,既然可以通过浏览器访问,说明IP并没有被服务器禁封,加上你提到用了requests库,通过requests.Session()来获取了一个对象或者指定了headers中的Cookie字段来发送请求。这两种方法,服务器都会认为你的多次请求来自同一个客户端,自然访问过快之后,服务器会向此客户端弹验证码(服务器端通过Session确认某一个用户,客户端通过Cookie[中的某一条]告诉服务器自己是某Session对应的用户)。所以,可以尝试切换一个新的requests.Session()对象来发送请求。也可以通过代理IP,使用代理IP需要注意的是,最好选择高匿的IP,芝麻HTTP代理IP就非常适合爬虫使用。并在使用前校验有效性。通过requests使用代理:import requests

proxies = {
  "http": "http://10.10.1.10:3128",
  "https": "http://10.10.1.10:1080",
}

requests.get("http://example.org", proxies=proxies)
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值