0

我正在使用提琴手核心代理进行一些脚本注入。我注意到 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 请求。

4

1 回答 1

0

您遇到的问题是您的替换不够精确。您正在用</body>包含引号的字符串替换所有页面上的所有实例。但是,在某些情况下,您要替换的字符串出现在 Google 应用程序的 JavaScript 字符串中,因此您正在破坏 JavaScript 字符串并导致脚本错误。

使用以下脚本示例更好地了解您要替换的所有位置,然后更新您的脚本以更具体地仅替换预期页面上的预期字符串。

    oSession.utilDecodeResponse();
    if (oSession.utilReplaceInResponse("</body>", '<!-- INJECTED --></body>'))
    {            
        oSession["ui-backcolor"] = "lime";
    }      
于 2013-07-12T16:09:30.273 回答