反爬与绕过反爬技术总结
反爬与反反爬技术总结做爬虫的人几乎都会接触“反爬”。早期的网站反爬其实很简单很多时候改个User-Agent就能继续抓数据。但这些年随着前端技术、风控系统以及 AI 的发展现代网站的反爬已经越来越复杂很多大型网站甚至已经把“反爬”做成了一套完整的风控体系。本文从实际开发角度总结一下常见的反爬机制以及开发中常见的绕过思路。一、反爬的核心是什么很多人刚接触爬虫时会觉得反爬就是“禁止程序访问网站”。实际上并不是。网站真正想做的是识别异常访问行为防止数据被批量采集降低恶意请求对服务器的压力所以反爬的本质其实是网站判断你是不是“正常用户”而反反爬则是让程序尽量表现得像真人现代反爬越来越像风控系统而不只是简单地拦截请求。二、最基础的反爬请求特征检测最早期的反爬基本都是围绕 HTTP 请求本身展开的。1. User-Agent 检测浏览器访问网站时会携带User-Agent比如 ChromeMozilla/5.0 Chrome/136.0而很多初学者直接用requests.get(url)请求头里会暴露python-requests网站很容易识别。因此最基础的做法就是伪装浏览器请求头headers{User-Agent:Mozilla/5.0 ...}不过现在大部分网站已经不会只靠这个判断。2. Cookie 与 Referer 校验很多网站会检查请求是否携带 CookieSession 是否连续请求来源是否合法例如图片防盗链、登录态验证本质上都是这个思路。如果请求没有 CookieReferer 异常Session 不连续就容易被识别。因此很多爬虫都会使用requests.Session()维护会话状态。三、限流与 IP 封禁这是最常见的一类反爬。真人访问网站时有阅读时间有停顿不会每秒几十次请求但程序天然倾向于高频访问。因此网站通常会限制请求频率返回 429临时封 IP拉黑异常 IP 段尤其很多网站会重点限制云服务器 IP数据中心 IP因为大量爬虫都部署在云服务器上。常见绕过方式1. 降低请求频率例如time.sleep(random.uniform(1,3))通过随机等待让行为看起来更自然。2. 控制并发使用asyncio Semaphore请求队列限速器避免瞬时请求过高。3. 代理池这是大规模爬虫最常见的方案。包括HTTP 代理SOCKS5动态住宅 IP本质上是让请求来源不断变化避免单 IP 被封。四、动态渲染带来的变化以前很多网站都是服务端渲染。requests BeautifulSoup基本就能完成大部分采集。但现在大量网站使用ReactVueNext.js页面数据往往是 JavaScript 动态生成的。这时你会发现requests.get()拿到的 HTML 基本没内容。五、浏览器自动化为了解决 JS 渲染问题后来开始大量使用浏览器自动化工具。主流方案包括SeleniumPlaywright其中Playwright 官方文档这几年越来越流行。因为它本质上是真实浏览器页面会真正渲染JS 会执行Cookie 自动维护行为更接近真人所以很多复杂网站requests 已经无法处理必须使用浏览器自动化六、现代重点浏览器指纹现在很多网站真正重点检测的其实已经不是请求而是浏览器环境网站会收集分辨率时区字体GPU 信息CanvasWebGL浏览器属性然后生成所谓的浏览器指纹即使换 IP也可能被识别成同一个设备。因此现代反爬已经从识别请求变成了识别设备七、自动化浏览器检测很多网站会专门检测navigator.webdriver如果为 true基本就说明SeleniumPlaywrightHeadless 浏览器除此之外还会检测Headless 特征浏览器行为DevTools 痕迹常见处理方式例如使用 stealth 插件隐藏自动化特征。非 Headless 模式headlessFalse更接近真实浏览器。修改浏览器环境包括分辨率时区字体语言核心思路都是尽量伪装成真实用户环境八、行为检测这是近几年越来越常见的一类反爬。网站开始关注你“像不像真人”例如会分析鼠标轨迹页面停留时间滚动行为点击间隔输入速度真人访问网站时会停顿会阅读会滚动页面行为随机而程序通常点击极快没有停顿行为路径固定所以很多高级爬虫会开始模拟鼠标移动页面滚动随机等待本质上是在模拟真实用户行为。九、接口加密与前端逆向很多网站现在已经不会直接暴露真实接口。请求里经常会出现signtokentimestamp这些参数通常是前端 JS 动态生成的。这时仅仅抓包已经不够了还需要分析前端逻辑。常见工具包括浏览器开发者工具FiddlerCharlesmitmproxymitmproxy 官方网站很多时候真正困难的并不是“发送请求”而是搞清楚参数怎么生成十、为什么现在反爬越来越难因为现代网站已经不再单独依赖某一种检测方式。通常会综合分析IP浏览器环境Cookie访问频率用户行为设备特征很多大型网站甚至已经接入完整风控系统。例如Cloudflare 官方网站本质上已经不是“防爬虫”而是在做风险识别异常流量检测自动化行为分析十一、总结反爬和反反爬本质上是一场持续对抗。早期爬虫requests BeautifulSoup基本就能解决问题。但现在的网站JS 动态渲染浏览器指纹行为分析风控系统已经让简单爬虫越来越难生存。因此现代爬虫技术也逐渐发展成浏览器自动化代理池行为模拟分布式采集未来随着Agent自动化网页操作AI 数据采集的发展“网页自动化”会越来越像一种综合工程能力而不只是简单写几个 requests。