Python 爬虫被屏蔽有好的办法吗?
除了用 selenium 模拟外,其他还有好的办法吗?
Python 爬虫被屏蔽有好的办法吗?
selenium 一般用来爬一些 js 搞上去的内容, 而不是解决爬虫被屏蔽的, 解决被屏蔽的方法一般是代理 ip 池, cookie 池, 随机 user-agent 等
遇到反爬,核心思路是让请求更像真人操作。最直接有效的方法是加请求头,特别是 User-Agent,用 requests 库可以这样:
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get('https://example.com', headers=headers)
如果还不行,大概率是 IP 被限制了。这时候得上代理 IP 池,用 requests 加代理很简单:
proxies = {
'http': 'http://your-proxy-ip:port',
'https': 'https://your-proxy-ip:port'
}
response = requests.get('https://example.com', headers=headers, proxies=proxies)
对于需要登录或者有复杂验证的网站,selenium 模拟浏览器更省事:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://example.com')
# 后续可以模拟点击、输入等操作
另外,控制请求频率也很关键,用 time.sleep 随机延时能有效降低被封风险:
import time
import random
time.sleep(random.uniform(1, 3)) # 随机等待1-3秒
总结一下,加请求头、用代理、控制频率,这三板斧能解决大部分基础反爬。
ip 没有封,user-agent 随机无效,只能打开浏览器访问就可以。
什么网站?
多 requests 几次 就被认为是爬虫,浏览器是正常的。http://www.ledsmagazine.com/articles/2018/04/lrc-s-mark-rea-will-lead-ul-circadian-lighting-task-group.html
技术不过关啊。。。。
是的
该有的 Header 都加上
mark, 之前也是遇过一个网站, 用爬虫各种伪装了都不行, 用浏览器访问却可以. 最后也是只能用 selenium😂😂. 看看大神们有什么更好的方法
应该不是,selenium 我也要加载很久才可以获得。提早获得也是提升爬虫页面。
抓包看看浏览器访问时的包
限速控制并发 
把并发间隔整形成高斯分布试试。
顺便问一下,像斗鱼这种第一次爬就直接屏蔽掉,返回 404 的,该怎么处理?
没有并发,就访问了 2-3 次就这样。并且间隔很久
说明伪装得不像,一般防盗链就 user-agent 和 referer 两个参数来判断,这两个都不填,傻子都知道你是机器人
我都说了,无用。selenium 我也要加载很久才可以获得真实页面
并不是学艺不精,看来一下这个网址的反爬确实很严格
各种加载 js 运行,懒得搞的话还是调用浏览器吧
重启路由器 更换家里的动态 ip https://github.com/hizdm/dynamic_ip
估计 js 检测吧, 能执行才是浏览器。
贴地址 不然靠猜吗
请先说明是哪种方式的屏蔽
用抓包软件,设置好 header 啊。可以减少被封的概率的
Chrome F12 找到接口 右键复制到 curl
然后贴到这里 https://curl.trillworks.com/ 把生成的代码运行一遍
看看行不行先~我猜多半是 Cookie 的问题
浏览器也想被提示爬虫可以试试把 Cookie 清掉 这样多半就会提示你输验证码啦
#8 这个只能对症下药。
UA 是比较基本的反爬,最好清除浏览器 cookie,打开 F12-network,再打开网站,这个时候分析一下请求的 method、header 一般就能找到关键所在
你是要抓这个 URL 中的什么信息,中间的正文应该是可以直接获取的
浏览器可以,requests 就一定可以。愿意付费可以联系我,微信公众号 pydatame 有联系方式
js 加密检测,了解一下
抓包时发现应该是这个 pwhqfbsrcqtcbabfzrvevcde.js 文件作怪,在这个文件后面浏览器和 selenium 的内容变了
用火车头试试看!
搞定了么?简单得话,火车头就可以了,要想分析的话可以看看楼 js,没有混淆,能够明显看到检查


