admin 管理员组

文章数量: 1184232

在爬虫采集、接口测试或前端调试场景中,服务器常通过请求头(Request Headers) 识别访问来源。若请求头缺乏浏览器特征,极易被判定为 “非人类访问” 并拦截。本文整理了从简单到复杂的 N 种请求头伪装方法,帮你轻松模拟真实浏览器行为。

一、先搞懂:请求头里的 “核心身份字段”

伪装的前提是理解关键字段的作用,盲目填写会适得其反。以下是浏览器请求头中最核心的 5 个 “身份标识” 字段,所有伪装方式都围绕它们展开。

字段名核心作用真实示例(Chrome 浏览器)
User - Agent(UA)告诉服务器 “我用的什么浏览器 / 系统”Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36
Referer告诉服务器 “我从哪个页面跳过来的”https://www.baidu/s?wd=请求头伪装
Accept告诉服务器 “我能接收什么格式的内容”text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,/;q=0.8
Accept - Language告诉服务器 “我偏好的语言”zh - CN,zh;q=0.9,en;q=0.8
Cookie携带用户登录状态、会话信息(关键反爬点)PHPSESSID=abc123def456; BAIDUID=1234567890ABCDEF:FG=1

二、N 种伪装方式:从新手到进阶

方式 1:手动构造请求头(适合新手 / 临时测试)

无需技术工具,直接按 “真实字段格式” 手动填写,适合简单接口测试或 Postman 调试。

  1. 确定需要伪装的核心字段:至少包含User - AgentReferer,若涉及登录需补充Cookie
  2. 参考真实浏览器的字段值:从自己的浏览器中复制(方法见方式 2),避免编造格式错误的值(如 UA 中漏写 “Windows NT 10.0”)。
  3. 填入工具或代码:在 Postman 的 “Headers” 栏、curl 命令的-H参数中直接粘贴。

示例(curl 命令)

bash

curl -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" -H "Referer: https://www.baidu/" "https://target/api"

注意:手动构造需保证字段值 “逻辑一致”,比如 UA 是 “Windows 系统 Chrome”,Accept - Language 就不能填 “ja - JP”(日语)。

方式 2:浏览器开发者工具 “复制真实请求头”(最省心)

直接复制自己浏览器发起的请求头,字段值 100% 真实,避免手动构造的错误。

  1. 打开目标浏览器(如 Chrome),按F12打开开发者工具,切换到 “Network”(网络)面板。
  2. 刷新目标页面,找到需要模拟的请求(如接口请求,可在 “Name” 栏筛选关键词)。
  3. 点击该请求,在右侧 “Headers”→“Request Headers” 中,点击 “View source”(查看原始),全选复制所有字段。
  4. 将复制的内容直接粘贴到 Postman、代码的headers参数中,无需修改。

注意:复制的请求头包含Cookie时,需注意其时效性(通常几小时到几天过期),过期后需重新复制。

方式 3:编程语言库自动伪装(适合爬虫开发)

在 Python、JavaScript 等语言中,用成熟库设置请求头,兼顾灵活性和真实性。

(1)Python:用requests

直接定义headers字典,将复制的真实字段填入即可。

python

运行

import requests

# 从浏览器复制的真实请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
    "Referer": "https://www.baidu/",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Cookie": "PHPSESSID=abc123def456; BAIDUID=1234567890ABCDEF:FG=1"
}

response = requests.get("https://target/api", headers=headers)
print(response.text)
(2)JavaScript:用axios

与 Python 逻辑一致,在headers配置中传入真实字段。

javascript

运行

const axios = require('axios');

const headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
    "Referer": "https://www.google/",
    "Accept-Language": "en-US,en;q=0.9"
};

axios.get("https://target/api", { headers })
    .then(res => console.log(res.data))
    .catch(err => console.log(err));

进阶技巧:可使用fake-useragent(Python)、user-agents(JS)库自动生成不同浏览器的 UA,避免固定 UA 被识别。

方式 4:浏览器扩展工具 “动态伪装”(适合前端调试)

通过浏览器插件实时修改请求头,无需改代码,适合临时测试不同浏览器特征。

  1. 安装扩展工具:Chrome/Firefox 可安装ModHeaderRequestly
  2. 配置伪装规则:以 ModHeader 为例,点击插件图标,在 “Request Headers” 中添加字段:
    • 点击 “+ Add”,输入字段名(如User-Agent)和对应的值(复制真实 UA)。
    • 可添加多个字段(Referer、Cookie 等),支持按 “网址匹配”(只对目标网站生效)。
  3. 访问目标网站:插件会自动将配置的请求头附加到所有请求中,实现实时伪装。

方式 5:自动化工具 “原生伪装”(对抗高级反爬)

Selenium、Playwright 等工具直接调用真实浏览器,请求头天然带有浏览器特征,无需手动配置,适合对抗检测严格的网站。

示例(Python + Selenium):

python

运行

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 配置Chrome选项(可选:伪装无头模式,仍保持真实请求头)
chrome_options = Options()
chrome_options.add_argument("--headless=new")  # 无头模式,不显示浏览器窗口

# 启动Chrome,请求头由浏览器自动生成(包含UA、Accept等)
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://target")  # 访问目标网站,请求头天然真实

# 若需自定义Cookie,可手动添加
driver.add_cookie({"name": "PHPSESSID", "value": "abc123def456", "domain": ".target"})
driver.refresh()  # 刷新后Cookie生效

print(driver.page_source)
driver.quit()

优势:自动化工具不仅伪装请求头,还能模拟鼠标点击、滚动等人类行为,反爬绕过能力更强。

三、伪装核心原则:别让 “细节露馅”

  1. 字段值逻辑一致:UA 是 “Mac + Safari”,系统字段就不能填 “Windows NT”;Referer 必须是真实存在的跳转页面(如从百度跳转到目标站,Referer 就填百度网址)。
  2. 动态更新关键字段:Cookie、SessionID 等时效性字段,需定期从真实浏览器中重新复制,避免用过期值。
  3. 避免 “过度伪装”:不要添加浏览器不会携带的字段(如自定义X-My-Header),也不要遗漏必要字段(如 Chrome 请求头必带AppleWebKit)。

本文标签: 浏览器 真实 方式 大全