Javascript 监视外部网站的HTTP请求

Javascript 监视外部网站的HTTP请求,javascript,ajax,cross-domain,http-request,http-monitor,Javascript,Ajax,Cross Domain,Http Request,Http Monitor,我想根据网站上发生的事情编写一个脚本生成器,为此我编写了基于javascript-ajax的脚本生成器,在每个页面上我都包含js文件,在提交页面的页面的功能块中,我调用javascript函数来启动页面变量(DOM)的读取通过getElementsByTagName(*),在循环使用它之后,我使用ajax将预定义格式写入文件 这一切都是为运行它的同一个站点完成的,但是现在,当我需要为任何其他站点实现与在网站上所做的一样的记录器和脚本生成器并登录到文件时,我既不能将我的脚本包含到任何其他外部网站上

我想根据网站上发生的事情编写一个脚本生成器,为此我编写了基于javascript-ajax的脚本生成器,在每个页面上我都包含js文件,在提交页面的页面的功能块中,我调用javascript函数来启动页面变量(DOM)的读取通过getElementsByTagName(*),在循环使用它之后,我使用ajax将预定义格式写入文件

这一切都是为运行它的同一个站点完成的,但是现在,当我需要为任何其他站点实现与在网站上所做的一样的记录器和脚本生成器并登录到文件时,我既不能将我的脚本包含到任何其他外部网站上,也不能在提交到读取dom并放入文件之前放置函数调用

下面是js的伪代码

 beginRecording();

function beginRecording()
{
    if(RECORD_BIT == 1)
    { 
       processPageData();   
    }
}

function processPageData()
{
  var i
  var obj = document
  var posArray = new Array();
  var allElement = obj.getElementsByTagName("*");
  var dataArrayString = "";

  for(i=0; i < allElement.length; i++)
  {
    if (allElement[i].getAttribute('id') != null && allElement[i].getAttribute('id') != "") 
    {
        posArray[posArray.length] = allElement[i].getAttribute('id');
    }
 }

 for(i = 0 ; i < posArray.length ; i++)
 {
    dataArrayString = dataArrayString+"SET  "+posArray[i]+"="+getValueFromPage(posArray[i]);
 }



  writePostData(dataArrayString);

}
beginRecording();
函数beginRecording()
{
if(记录位==1)
{ 
processPageData();
}
}
函数processPageData()
{
变量i
var obj=文档
var posArray=新数组();
var等位基因=obj.getElementsByTagName(“*”);
var dataarraysting=“”;
对于(i=0;i<等位基因长度;i++)
{
if(等位基因[i].getAttribute('id')!=null和等位基因[i].getAttribute('id')!=“”)
{
posArray[posArray.length]=等位基因[i].getAttribute('id');
}
}
对于(i=0;i
函数writePostData执行ajax操作,并通过记录DOM元素上的内容在服务器上写入/更新文件,我还发送了liek GET/POST或page name等更多详细信息

在javascript以文档形式提交[0].submit()之前,会在页面上调用beginRecording(),以便它可以捕获POST

我读过关于跨域ajax的文章,但我仍然不知道如何监控任何外部网站的HTTP(读取GET/POST和页面或URL上的数据),而不将脚本添加到该文件中,并写入该文件


任何帮助或指导都会很好。

你不能在远程站点上包含javascript,也不能监视它的HTTP请求。这两件事都会给安全带来灾难性的后果。

听起来你应该编写浏览器插件,而不是网页。嗨,Epascarello,谢谢你的建议,我能够使用crossrider创建浏览器插件,它能够捕获get和post,在IE上使用activex,我能够将捕获写入文件。在yahoo和其他网站上测试,只需要将它们添加到受信任的站点,这是可以接受的。然而,若页面有框架集,比如页眉/正文/页脚,并且页脚正在正文上执行一些操作,那个么我就无法捕获框架集中的框架帖子了吗?我可以使用javascript捕获它吗?我尝试过使用self.frames.count,然后使用parent.frames[index].document.location.href,但仍然无法捕获。感谢您的回复,我知道我无法将脚本注入到其他网站,但是firefox甚至可以捕获POST数据,我可以在firebug上看到这一点,在net->html->下展开post请求,然后在post选项卡下展开。如果我严格使用firefox和firebug进行监控,我可以捕获firebug记录的POST数据或POST/GET请求吗?你必须构建一个firefox扩展才能做到这一点,这些信息对一般网站不可用-用户必须选择安装你建议的内容。你到底想在这里实现什么?也许我们可以建议一种更好的方法来获得您想要的结果。感谢您的回复,我们有一个响应监视工具,它可以反复监视预定义的操作集,监视响应时间,并生成图表,以显示整个一天中该操作所用的时间,并生成用于报告的图表,然而,该脚本告诉你该做什么,比如设置username=x password=y和在这个IP上通过http发布,目前需要手动编写,为此,你需要知道用户想要反复测试哪些输入参数、它们的id和值,但生成该脚本容易出错,所以我们需要在导航站点时使用记录器