公司动态

反爬基础:理解User-Agent、Cookie和Session的作用

📅 2026/8/29 14:17:51
反爬基础:理解User-Agent、Cookie和Session的作用
做了多年工业数据采集与反爬对抗见过最多的新手操作就是抓接口先F12复制浏览器全套请求头User-Agent、Cookie一股脑全贴上能跑就跑跑不通就乱换值。问他每个字段什么作用、反爬系统在校验什么全说不上来。遇到封控、Cookie失效、会话过期完全找不到根因只会反复复制新的Cookie继续试。其实反爬对抗的第一层永远是User-Agent、Cookie、Session这三个基础要素。绝大多数入门级反爬本质上就是围绕这三者做身份和行为校验绝大多数新手踩的坑也都是没搞懂三者的原理和边界。看似简单的三个字段实则贯穿了身份识别、会话维持、行为校验整个反爬体系是所有进阶对抗的根基。一、先理清定位身份、凭证、状态在深入原理之前先把三者的核心定位讲清楚避免混淆User-Agent客户端的身份名片告诉服务端你用的什么浏览器、什么系统、什么内核是最表层的身份标识。Cookie服务端下发的本地凭证存在客户端每次请求自动携带是身份和状态的数据载体。Session服务端维护的会话状态存在服务器上客户端通过Cookie里的SessionID关联对应状态。简单说UA标识你的设备环境Cookie携带你的随身凭证Session存储服务端的你的行为记录。三者配合完成“身份识别→权限校验→行为校验”的完整反爬闭环。二、User-Agent最基础的身份标识UA是所有HTTP请求的标准字段也是反爬系统的第一道防线。2.1 本质与作用User-Agent本质是客户端的环境描述字符串包含操作系统版本、浏览器品牌与版本、渲染内核、设备类型等信息。正常浏览器的UA有固定的格式和特征而爬虫工具的默认UA特征极其明显。反爬系统对UA的校验核心逻辑就是识别非正常客户端的UA特征直接拦截。2.2 常见的UA反爬校验层级基础存在性校验最简单的反爬策略校验请求有没有UA字段。大量爬虫新手写脚本忘记加UA直接被第一层拦截还找不到原因。特征库匹配反爬系统维护有常见爬虫库的UA特征库比如python-requests、Scrapy这类默认UA命中直接拦截。这也是为什么用默认配置的采集脚本很多站点直接返回403。一致性校验高阶一点的校验会把UA和其他请求头、行为特征做交叉比对。比如UA标识是Chrome浏览器但Accept、Accept-Language等字段却是Firefox的特征或者UA是桌面端但请求的是移动端接口都会被标记异常。设备指纹关联UA会和屏幕分辨率、时区、插件列表等其他环境字段组合生成设备指纹。同一个UA搭配不同的环境特征会被识别为多设备风险触发风控。2.3 实战技巧永远不要使用爬虫库的默认UA这是最低级的特征必被拦截。优先使用真实浏览器的UA按系统、浏览器版本维护UA池批量请求随机切换。不要随意伪造UA组合比如Windows系统配Safari浏览器、安卓系统配IE特征矛盾反而更容易被识别。同一个会话内保持UA固定不要频繁切换不符合真实用户行为。三、Cookie客户端的身份凭证Cookie是反爬对抗的核心载体绝大多数登录态、鉴权、风控标记都通过Cookie传递。3.1 工作原理Cookie的核心机制是服务端写入客户端自动带回客户端访问服务器服务器通过响应头Set-Cookie字段下发Cookie数据浏览器将Cookie按域名存储在本地后续每次请求同域名的接口浏览器自动在请求头带上对应的Cookie整个过程对用户透明不需要手动处理这也是正常浏览器的标准行为。3.2 反爬中的核心作用登录态维持用户登录后服务端会生成会话标识存入Cookie后续请求通过Cookie识别登录用户。这是需要登录的采集场景的核心凭证没有有效的登录Cookie就无法访问权限接口。访问计数与频率标记很多反爬系统会在Cookie中埋入访问次数、首次访问时间、请求间隔等字段。同一个Cookie请求频率过高、数量超阈值直接触发限流或拦截。签名与防篡改校验关键接口的Cookie中会携带签名参数和请求参数、时间戳绑定。篡改Cookie值、或者直接复制Cookie调用其他接口签名校验不通过直接拒绝。风险标记检测到异常行为比如高频请求、参数篡改系统会在Cookie中打上风险标记。打上标记的Cookie后续所有请求都会被严格校验甚至直接返回错误数据。3.3 常见对抗点时效性Cookie都有过期时间会话Cookie关闭浏览器就失效持久Cookie到时间自动失效。过期的Cookie必须重新获取不能一直复用。IP绑定部分系统会将Cookie和登录IP绑定切换IP后Cookie直接失效需要重新建立会话。设备绑定Cookie和浏览器设备指纹绑定换环境、换浏览器Cookie都会失效。动态刷新每次访问页面都会刷新Cookie值旧Cookie立即失效不能复用之前的单个Cookie值。3.4 实战技巧采集流程遵循正常访问顺序先访问首页获取基础Cookie再访问列表页、详情页不要直接上来就调用数据接口。保持会话内Cookie的连贯性不要东拼西凑不同页面的Cookie值容易出现签名不一致。遇到动态Cookie机制完整模拟页面跳转流程跟着服务端的Set-Cookie更新不要硬抠单个Cookie字段。批量采集做好会话隔离每个账号、每个IP对应独立的Cookie池避免交叉污染。四、Session服务端的会话状态很多人会把Cookie和Session混为一谈其实两者完全不是一个层面的东西Cookie是存在客户端的载体Session是存在服务端的状态。4.1 本质与关系Session是服务端为每个访问者维护的独立会话空间存储用户的登录状态、访问路径、操作记录、权限信息等。每个Session有唯一的SessionID这个ID通过Cookie下发给客户端客户端后续请求带上SessionID服务端就能找到对应的会话数据。简单说Cookie是箱子Session是箱子里装的东西。你能看到Cookie但Session的内容你看不到都存在服务端。4.2 反爬中的核心作用Session是反爬行为校验的核心绝大多数流程类反爬本质上都是Session层面的校验。访问流程校验服务端在Session中记录用户的访问路径。正常用户是首页→列表页→详情页爬虫直接跳过前面步骤直接请求详情接口Session里没有前置访问记录直接拦截。这就是常说的“必须先过页面才能调接口”。请求频率控制基于Session统计单位时间内的请求次数、请求间隔超过阈值就限流或封禁。很多时候你换了IP还是被限就是因为Session已经被标记了。步骤完整性校验多步操作的场景比如查询→验证→获取结果每一步的状态都存在Session里。跳过中间步骤直接请求最后一步Session里没有中间状态直接失败。CSRF令牌校验服务端生成CSRF令牌存在Session中每次请求需要带上对应的令牌。没有令牌、令牌不匹配都会被拒绝。这也是非常常见的接口反爬手段。4.3 实战技巧模拟真实用户的访问路径按页面流程逐步访问不要直接深链调用接口。控制单个Session的请求频率符合人类操作节奏不要秒级连续高频请求。遇到步骤校验完整走完全部流程不要试图跳过中间环节。被限流封禁时有时候换一个全新的Session清空Cookie重新访问比换IP效果更好。五、三者协同反爬校验的完整闭环实际的反爬系统从来不是单独校验某一个字段而是三者交叉验证形成完整的身份行为校验闭环。完整的校验逻辑通过UA初步判断客户端类型拦截明显的爬虫特征通过Cookie携带的SessionID找到服务端对应的会话校验Session里的访问路径、操作记录、频率是否正常校验Cookie、UA、IP、设备指纹是否和会话绑定一致全部符合放行任意一项异常触发风控或拦截很多新手疑惑为什么我Cookie也复制了、UA也换了还是被拦截核心原因就是只复制了字段没对齐三者的关联关系Session里的行为状态不对或者字段之间特征矛盾。六、新手高频踩坑总结用默认UA跑脚本还没开始真正对抗就被第一层UA特征拦截浪费大量时间排查。Cookie复制就万事大吉只复制Cookie值不理解Cookie的时效性、绑定关系跑着跑着就失效找不到原因。跳过流程直接调接口忽略Session的流程校验直接请求目标接口返回403还以为是Cookie不对。Cookie和IP混用同一个Cookie在多个IP上使用触发绑定校验直接被标记风控。混淆Cookie和Session以为改了Cookie值就能改状态其实核心数据都存在服务端Session改Cookie没用。单UA高频请求同一个UA大量连续请求特征极其明显很容易被识别封禁。最后反爬对抗从来不是靠堆砌请求头字段而是理解每一层的校验逻辑知道对方在查什么才能针对性应对。User-Agent、Cookie、Session是反爬的第一道门槛也是所有进阶对抗的基础。签名、验证码、设备指纹、人机验证这些高阶反爬本质上也都是建立在这三者的基础之上。把基础原理吃透再去看复杂的对抗手段才能抽丝剥茧找到核心突破口