mirror of
https://github.com/pysunday/sdenv.git
synced 2025-04-23 04:24:21 +08:00
54 lines
2.3 KiB
Markdown
54 lines
2.3 KiB
Markdown
## 样例说明
|
||
|
||
为了模拟浏览器与sdenv运行相同瑞数vmp代码生成一摸一样的cookie的复现方法与源文件。
|
||
|
||
## 启动代理
|
||
|
||
该样例需要使用代理工具,推荐代理工具:[sd_proxy](https://github.com/pysunday/tools-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](./pysunday-proxy/wcjs.sbj.cnipa.gov.cn/sgtmi/format),可以看到html中存在代码:
|
||
|
||
```javascript
|
||
.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,并写明您操作系统版本及浏览器版本,感谢!
|