我正在使用提琴手核心代理进行一些脚本注入。我注意到 gmail 登录在其登录进度条向前和向后移动一段时间后失败。下面给出了一个使用 c# 的示例,使用 google chrome 作为浏览器进行了测试。下面的代码进入提琴手代理的 beforeresponse 事件中,其中 os 是 HTTP 会话。
oS.utilDecodeResponse();
oS.utilReplaceInResponse("</body>", "<script type='text/javascript'>var a = 10;</script></body>");
更新
正如 Eric 所建议的那样,我确保该脚本不会与任何其他 java 脚本变量发生冲突。仅在gmail登录时在预期页面中添加了脚本。但是问题仍然存在。
if (oS.oRequest.headers.HTTPMethod == "GET" || oS.oRequest.headers.HTTPMethod == "POST")
{ //exclude other HTTP Status codes
if (oS.oResponse.headers.HTTPResponseStatus == "200 OK")
{
if (!oS.oRequest.headers.Exists("X-Requested-With"))
{
var accept = oS.oRequest.headers.FindAll("Accept");
if (accept[0].Value.Contains("text/html"))
{
if (oS.oResponse.MIMEType == "text/html")
{
oS.utilDecodeResponse();
string script = "alert("Hello");"
//The main http request after gmail login has a response with a script closing tag before body closing, so I am replacing it with my script added.
oS.utilReplaceOnceInResponse("</script></body>", script + "</script></body>", false));
}
}
}
}
}
与 chrome 一起工作正常,但在 safari 和 opera 中,警报被无限调用,以便重新加载页面的 HTTP 请求。