Python 爬虫被屏蔽有好的办法吗?

除了用 selenium 模拟外,其他还有好的办法吗?


Python 爬虫被屏蔽有好的办法吗?
35 回复

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 随机无效,只能打开浏览器访问就可以。

什么网站?

技术不过关啊。。。。

该有的 Header 都加上

mark, 之前也是遇过一个网站, 用爬虫各种伪装了都不行, 用浏览器访问却可以. 最后也是只能用 selenium😂😂. 看看大神们有什么更好的方法

应该不是,selenium 我也要加载很久才可以获得。提早获得也是提升爬虫页面。

抓包看看浏览器访问时的包

限速控制并发

把并发间隔整形成高斯分布试试。

顺便问一下,像斗鱼这种第一次爬就直接屏蔽掉,返回 404 的,该怎么处理?

没有并发,就访问了 2-3 次就这样。并且间隔很久

说明伪装得不像,一般防盗链就 user-agent 和 referer 两个参数来判断,这两个都不填,傻子都知道你是机器人

我都说了,无用。selenium 我也要加载很久才可以获得真实页面

并不是学艺不精,看来一下这个网址的反爬确实很严格

各种加载 js 运行,懒得搞的话还是调用浏览器吧

如果是要请求较多的数据的话,记得保存 cookies 会比较好一些

重启路由器 更换家里的动态 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,没有混淆,能够明显看到检查

回到顶部