样例说明
为了模拟浏览器与sdenv运行相同瑞数vmp代码生成一摸一样的cookie的复现方法与源文件。
启动代理
该样例需要使用代理工具,推荐代理工具:sd_proxy,该工具为自研工具,支持网站资源的收集与回放
启动代理回放:sd_proxy -H 0.0.0.0 -p 3000 -n playback -d pysunday-proxy --log
应用代理
浏览器端需要使用SwitchyOmega配置并应用3000端口转发。
sdenv需要使用jsdomFromUrl方法传入代理配置proxy: "http://127.0.0.1:3000"
。
获取cookie
该example对应的访问链接为:https://wcjs.sbj.cnipa.gov.cn/sgtmi
假设代理配置完全ok,则请求该链接时会返回html内容为文件pysunday-proxy/wcjs.sbj.cnipa.gov.cn/sgtmi/format,可以看到html中存在代码:
.getHandle('cookie')({
log: false,
setCb: (val) => {
if (val.includes('goN9uW4i0iKzT')) {
cookies.push(val);
if (cookies.length === 3) {
console.log(`第三次cookie值写入:${val}`);
debugger;
}
}
}
})
其中第三次cookie的值即为最终发起请求的cookie值。
- node端: node中直接执行
node-9229 example/use-proxy/index.js
,命令操作符中会打印cookie值后退出 - 浏览器端: 浏览器端需要打开开发面板后再请求网址
https://wcjs.sbj.cnipa.gov.cn/sgtmi
,在断点处即可看到cookie值
结论
作者电脑系统版本:macOS(13.4)
作者浏览器版本:Chrome Canary(121.0.6124.0)
作者node和浏览器分别运行后断点处打印的值都为goN9uW4i0iKzT=0o6uz9peZ4RlIIiCpo6uz9F9f4zZghSX8vcCtuqn0xNaRncrIKsE8SR4aRoGLBGiDlCiw69spB51I78BjEbiyeIPgiMdhjjQvrJQ.7iwYLKrWMPMi0xRa.xN64KvZGbXlPfFz0OaiHM8o.IvfnXEaf0RuNFu5VKDSSevbBeiVFAqzWPD_gZzXwDmJnf6bpaet1yyg2lmCOWCzUre8W52LiD2U95ZxkI2jrAzmfpcdX.V; path=/; expires=Tue, 12 Mar 2024 09:42:17 GMT
如果您的系统及浏览器与作者一致,那么您可以直接运行该样例复现。
当然,您也可以参考browser/chrome
目录下的文件内容,新建一个browser并将您浏览器的值填如后参考前面方法进行试验,如果试验成功请提交您browser代码的pr,并写明您操作系统版本及浏览器版本,感谢!