首页 新闻 搜索 专区 学院

在selenium开的浏览器中,响应头修改插件失效,如何解决

0
悬赏园豆:100 [已解决问题] 解决于 2021-01-22 14:41

如题,用selenium打开加载了自己写的chrome扩展的一个浏览器,其中响应头修改失效了,在正常开发启动的浏览器中没有发现这个问题,请问哪位大佬遇到过这种情况,该如何解决,修改响应头回调代码如下:

function callback(requestDetails) {
requestDetails.responseHeaders.forEach(header => {
if (header.name == 'Content-Type' && header.value == "text/plain") {
header.value = header.value + ";charset=UTF-8";
}});
return {responseHeaders: requestDetails.responseHeaders};
}

使用和未使用selenium打开的浏览器中调试过程都没有问题。
查了部分资料,有人说在控制台的network中看到的响应头虽然没变,但实际已经修改了,但是我在修改响应头之后又获取了响应内容,依然是乱码,在正常打开的浏览器中就不会。
exception_d的主页 exception_d | 初学一级 | 园豆:116
提问于:2020-11-11 17:31
< >
分享
最佳答案
0

几个点可以判断
1 浏览器开发工具下,看请求包是否修改了头
2 直接使用抓包工具,如wireshark,抓下这个端口的网络包,这是最终的网络传输包,如果修改了肯定就是修改了,而且可以看到传递的真实数据流

收获园豆:100
2012 | 高人七级 |园豆:20662 | 2020-11-12 08:10

感谢回复

  1. 正如我下面说的,selenium下浏览器开发工具Network中看到的响应头与正常生效的浏览器响应头请求确实不一样,这个可能是出现问题的主要原因;
  2. 我不确定是不是等同步onHeadersReceived处理完后再去接收body,这个待我去抓一下响应,谢谢。

刚才去查了下浏览器请求响应相关资料,我的理解是响应体内容是二进制形式传输,具体怎么解析是在响应头里标识的,这样看来抓包可能看不出区别,问题的原因还是在于浏览器没有识别到插件修改后的响应头,这个问题在chrome和新版edge中都存在。

exception_d | 园豆:116 (初学一级) | 2020-11-12 10:10
其他回答(1)
0

换了种方式曲线救国了

exception_d | 园豆:116 (初学一级) | 2020-11-13 14:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册