JS 脚本语言第七课,HTTP 附加参数。

大家好,欢迎来到 JS 脚本语言的第七课。今天我们正式进入网络请求部分的第二课。


在前面的课程里,我们学会了怎么发请求、怎么带参数。但在真实的网络世界里,光带上请求参数还不够。今天我们要讲的是“附加参数”。


打个比方,假设你特别喜欢看某讯视频或者某奇艺上的一部电视剧,但这部剧是 VIP 收费的。你不想花钱买会员,于是想写个爬虫脚本,偷偷把视频资源提取出来。这时候,网站的服务器就像是一个严格的保安,你直接去要视频,保安肯定不给你。为了骗过保安,你就需要在请求里带上一些“附加参数”来伪装自己。


具体需要带哪些附加参数呢?我们挨个来拆解,保证小白也能听懂。


第一个参数:User Agent,简称 UA。

你可以把 UA 想象成一块“免死金牌”或者“良民证”。为什么这么说呢?因为当你用爬虫脚本去请求数据时,脚本默认会暴露自己是“机器人”的身份。服务器一看是机器人,直接就把你拦截了。

但是,如果你带上了 UA,就相当于告诉服务器:“嘿,我是用 Windows 10 电脑上的 Chrome 浏览器来看网页的真人!”服务器一看这串信息,觉得“哦,是个正常用户”,就会放行。

UA 本身是一串长长的字符串,里面包含了你的设备类型、操作系统版本、浏览器版本等。

不过现在写爬虫的人,对 UA 都没那么较真了,很多时候随便写一个就行。比如你可以假装自己是 Windows 10 系统,Chrome 137 版本的浏览器。你要记住:UA 不是用来做严格身份验证的,它只是让服务器“更愿意相信”你是个正常的浏览器,别把你当机器人抓了。


在 Node.js(也就是在电脑后台运行 JS 的环境)里,怎么设置 UA 呢?就是给请求头(headers)里加一个 User-Agent 字段。我们来看看代码长什么样:


const axios = require('axios');


axios.get('https://example.com/video/1', {

headers: {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'

}

});


小白解读:这段代码的意思是,用 axios 这个工具去请求 example.com 的视频。在请求的时候,我们在 headers(请求头)里塞入了一个 User-Agent,后面那一大串英文就是假装自己是 Chrome 浏览器的“伪装口令”。


补充一点:如果你是在真实的浏览器里写脚本(比如用 fetch 或 axios),浏览器会自动帮你带上真实的 UA,一般不让你手动改。所以我们写爬虫,通常是在 Node.js 这种非浏览器环境里,这样请求头里带什么,就全由我们说了算。


第二个附加参数:Referer(注意拼写,少了一个 r)。

Referer 就像是你的“介绍信”。它告诉服务器:“我这次来拜访,是从哪个页面跳转过来的”。

很多视频网站和图片网站都有“防盗链”机制。啥叫防盗链呢?比如一个视频,网站规定“你只能在我的播放页面点击播放,不能直接把视频链接复制到别的地方去放”。如果你直接拿视频链接去请求,服务器一看你的 Referer(介绍信)不对,不是从我的播放页来的,就会拒绝给你视频,或者给你返回一个错误图片。

所以,写爬虫解析视频时,我们往往需要在请求头里加上播放页的地址作为 Referer,代码大概是这样:


axios.get('https://video.example.com/vod/123', {

headers: {

'User-Agent': 'Mozilla/5.0 ...',

'Referer': 'https://v.example.com/play/123'

}

});


小白解读:这里除了带上刚才说的 UA,还加上了 Referer。告诉服务器:“我是从 v.example.com/play/123 这个播放页面点进来的,不是外部直接来偷链接的,快把视频给我。”


第三个附加参数:Cookie。

Cookie 就像是服务器发给你的一张“VIP 门禁卡”或者“身份凭证”。

特别是那些需要登录才能看的会员视频,服务器怎么知道你是不是会员呢?就是靠 Cookie。当你在浏览器里登录网站后,服务器就会给你发一个 Cookie。

怎么获取这个 Cookie 呢?你在浏览器里按 F12 打开开发者工具,找到 Network(网络)面板,随便点一个请求,就能在请求头(Request Headers)里看到 Cookie 字段。把这串长长的字符复制到你的爬虫脚本里,服务器就会把你当成那个已经登录的真人 VIP 用户,从而允许你访问收费资源。


第四种常见的附加参数:Origin。

Origin 和 Referer 有点像,也是告诉服务器“我从哪来的”。但 Origin 比较粗略,它只包含“协议+域名+端口”,不包含具体的网页路径。比如它只会写 https://v.qq.com,不会写后面的具体视频路径。

很多后端接口会检查 Origin 是不是在自己的“白名单”里。如果你的 Origin 是别的网站,它就直接拒绝。所以在调接口时,我们通常要把 Origin 设置成目标网站的首页地址,证明自己是“内部人”。


这四种附加参数,基本都放在请求头(headers)里。虽然看起来只是一串串枯燥的字符串,但服务器就是靠它们来判断“你是谁、你能不能访问、你是不是机器人”。这也是爬虫开发中最开始要解决的几个基础反爬问题。


接下来看最后一种参数,也是听起来最高级的一种:CSRF Token。

假设你没有会员,又想看收费电视剧,买不起会员怎么办?有些聪明的同学可能会想到用 CSRF 来绕过限制。

这里要解释一下,CSRF 全称是跨站请求伪造。网站为了防止别人恶意伪造请求,会在你登录下发 Cookie 的同时,在网页里偷偷塞一个随机的“防伪印章”,也就是 CSRF Token。

当你后续发起请求(比如提交数据、获取视频)时,除了带上 Cookie(门禁卡),还必须带上这个 Token(防伪印章)。服务器拿到请求后,会核对这两个东西是不是匹配的。如果匹配,才认为这是合法的请求。


但是!我要重点提醒小白们:试图用 CSRF 去破解会员视频,既复杂又危险,极其不推荐!

为什么?首先,你得先弄到一个真实会员账号的 Cookie,这涉及账号安全;其次,这个 Token 往往是一次性的,每次请求前你都得去网页里动态提取它,工程成本极高;最后,频繁模拟请求很容易触发网站的风控系统,导致你的 IP 甚至账号被封禁。

所以对于普通学习者,了解 CSRF 的原理就行了。真想获取视频资源,还是去找合法的开放接口或者公开素材吧。


回到我们这一课的主题,总结一下这些“附加参数”的作用:

UA(免死金牌):基础识别,只要不像明显的机器人,通常都放行。

Referer(介绍信):主要用来防盗链,证明你是从正规页面点进来的。

Cookie(VIP门禁卡):真正决定“你是谁”,需要登录或会员状态的接口全靠它。

Origin(小区通行证):多用于跨域请求校验,防止非白名单网站调用接口。

CSRF Token(防伪印章):在提交数据时常见,防止伪造请求。


写爬虫时,给大家一个最实用的建议:先把目标请求在浏览器的开发者工具(Network 面板)里完整看一遍。对照请求头里出现过的字段,逐一复制到你的代码中。当你的请求返回 403(禁止访问)、401(未授权)等错误时,优先检查是不是漏了上面说的某个字段,或者字段值没和浏览器里保持一致。


在实际写代码时,为了避免每次请求都重复写一大串请求头,我们可以利用 axios 的全局设置,把这些附加参数统一配置好。代码像这样:


const axios = require('axios');


// 统一设置全局的请求头

axios.defaults.headers.common['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...';

axios.defaults.headers.common['Referer'] = 'https://v.example.com/';

axios.defaults.headers.common['Origin'] = 'https://v.example.com';

axios.defaults.headers.common['Cookie'] = 'your_cookie_string';


// 这样以后发请求,就不用每次都写 headers 了

axios.get('https://video.example.com/vod/123')

.then(res => console.log(res.data))

.catch(err => console.error(err));


小白解读:这段代码通过 axios.defaults.headers.common 把常用的附加参数一次性设置好。后面再发请求时,axios 会自动带上这些参数,代码看起来就清爽多了。


不过要特别提醒:Cookie 是有有效期的!而且服务器经常会更新它。如果你在代码里写死了一个 Cookie,用几天后它失效了,你又会被服务器拦截。更稳妥的做法是,在脚本里写个自动登录的功能去动态获取 Cookie,或者把 Cookie 放在配置文件里,定期手动更新。


最后总结一下:网络请求里的“附加参数”绝不是可有可无的装饰品,它们是服务器判断请求来源和身份的核心凭证。抓包分析、找出必要的附加参数、把它们完整地放进代码里,这就是爬虫解析资源的基础流程。


当然,我们学习这些技术,是为了理解 Web 请求的运作机制。请大家在写脚本时,一定要遵守目标网站的 robots 协议和用户协议,千万不要用于非法用途。


好了,关于附加参数今天就讲到这里。下节课我们要进入 WebSocket 的学习,去感受一种可以“双向实时聊天”的神奇通讯方式。今天的课程就到这里,下课!

发表于:2026-09-04 14:27
0个回复
  • 消灭零回复
您还没有登录,登录后才可回复。 登录 注册