python爬虫ip被封怎么办,求解
2017-12-04 · 百度知道合伙人官方认证企业
简单来讲,你通过代码向服务器发送的请求与浏览器向服务器发送的请求不一样,所以你可以通过浏览器获取数据,但是无法通过代码。
首先建议你打开浏览器的开发者工具,推荐使用Chrome浏览器。选中Network一栏之后重新通过浏览器向服务器发送一次请求,然后,你就可以看到你刚才通过浏览器访问服务器资源的流程和数据流向。其中,数据流向包括:
浏览器向服务器发送的请求头
浏览器向服务器发送的请求体
(可能)服务器向浏览器发送的重定向地址及浏览器重新向新的地址发送请求
服务器返回的响应头
服务器返回的响应体
- import requests
- proxies = {
- "http": "http://10.10.1.10:3128",
- "https": "http://10.10.1.10:1080",
- }
- requests.get("http://example.org", proxies=proxies)
---
你面临的问题很可能是在模拟浏览器发送请求这一步(1、2)。检查代码,修复之。
至于解决方案,既然你可以通过浏览器访问,说明你的IP并没有被服务器禁封,加上你提到用了requests库,我猜测你通过requests.Session()来获取了一个对象或者指定了headers中的Cookie字段来发送请求。这两种方法,服务器都会认为你的多次请求来自同一个客户端,自然访问过快之后,服务器会向此客户端弹验证码(服务器端通过Session确认某一个用户,客户端通过Cookie[中的某一条]告诉服务器自己是某Session对应的用户)。
所以,你可以尝试切换一个新的requests.Session()对象来发送请求。更甚之,你可以通过代理IP,使用代理IP需要注意的是,最好选择高匿的IP,并在使用前校验有效性。通过requests使用代理:
2023-07-25 广告
可以把你浏览器的cookie导入python的爬虫里,firefox是以数据库的方式存储cookie,要用sqlite读一下,ie是按不同网站分不同文件存储。
导入对应的cookie之后,如果爬虫被封,就进对应的浏览器填个验证码。
这样可以轮流切换不同的cookie,网站可能会判断为不同的用户
2018-11-11
名称:618IP代理
语言:简体中文
环境:WinXP/Vista/Win7/Win8/Win10/手机
618ip代理是一款强大的换动态ip软件,范围可覆盖全国城市。
2020-08-05 · 百度认证:江苏艾迪信息科技官方账号