样例说明

为了模拟浏览器与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并写明您操作系统版本及浏览器版本感谢