Javascript 将源代码发送到外部服务器

Javascript 将源代码发送到外部服务器,javascript,screen-scraping,greasemonkey,Javascript,Screen Scraping,Greasemonkey,我感兴趣的是编写一个脚本,最好是一个易于使用Greasemonkey等工具添加到浏览器上的脚本,它可以将页面的HTML源代码发送到外部服务器,然后在那里对其进行解析,并将有用的数据发送到数据库 然而,我还没有看到任何类似的情况,我也不知道如何完成这项任务。我想某种HTTP post可能是最好的方法,但我对这些想法完全陌生,甚至不知道将数据发送到何处进行解析(例如,将整个HTML文档发送到数据库是没有意义的) 因此,基本上,我的总体目标是这样的(请注意,我只需要步骤1和步骤2的帮助。我熟悉数据解析

我感兴趣的是编写一个脚本,最好是一个易于使用Greasemonkey等工具添加到浏览器上的脚本,它可以将页面的HTML源代码发送到外部服务器,然后在那里对其进行解析,并将有用的数据发送到数据库

然而,我还没有看到任何类似的情况,我也不知道如何完成这项任务。我想某种HTTP post可能是最好的方法,但我对这些想法完全陌生,甚至不知道将数据发送到何处进行解析(例如,将整个HTML文档发送到数据库是没有意义的)

因此,基本上,我的总体目标是这样的(请注意,我只需要步骤1和步骤2的帮助。我熟悉数据解析技术,只是从未将它们应用到web):

  • 用户查看特定页面
  • 源代码通过greasemonkey或其他工具发送到服务器
  • 代码被解析为存储在MySQL数据库中的有意义的数据
  • 非常感谢任何提示或帮助,谢谢

    编辑:代码

    ihtml = document.body.innerHTML;
    GM_xmlhttpRequest({
    method:'POST',
    url:'http://www.myURL.com/getData.php',
    data:"SomeData=" + escape(ihtml)
    });
    
    编辑:当前JS日志:

    Namespace/GMScriptName: Server Response: 200
    OK
    4
    Date: Sun, 19 Dec 2010 02:41:55 GMT
    Server: Apache/1.3.42 (Unix) mod_gzip/1.3.26.1a mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_ssl/2.8.31 OpenSSL/0.9.8e-fips-rhel5 PHP-CGI/0.9
    Connection: close
    Transfer-Encoding: chunked
    Content-Type: text/html
    
    Array
    (
    )
    
    http://www.url.com/getData.php
    

    正如在你的Q评论中提到的,我不认为这是一个好主意,就我个人而言,我会避免任何类似瘟疫的扩展,但是

    您可以使用所有html元素上可用的
    innerHTML
    属性来获取该节点内的html,例如body元素。然后可以使用AJAX HTTP请求发布数据

    您可能还需要考虑某种压缩形式,因为某些页面可以非常大,大多数用户的下载速度比上传速度更好。 注意:

    innerHTML
    获取将以当前状态显示页面的源代码的表示,而不是从web服务器发送的实际源代码-例如,如果使用JS添加元素,则该元素的源代码将包含在
    innerHTML
    中,即使它从未通过web发送

    另一种方法是使用AJAX请求获取当前URL并向自己发送响应。这正是发送给客户机的内容,但相关服务器会意识到该页面被服务了两次(在某些web应用程序中,可能会导致问题,例如“按”两次删除按钮)

    最后一个建议是,只需将当前URL发送给您自己,然后在您自己的服务器上进行下载—这还可以减轻一些安全风险,因为您无法检索非公共页面的内容

    编辑:

    NB:我删除了许多用于跟踪问题的虚假信息,如果需要完整详细信息,请查看编辑日志

    PHP代码:

    <?php
        $PageContents = $_POST['PageContents']
    ?>
    

    这听起来像是用于广告或类似行为定位的东西-请注意,所涉及的页面来源可能包含敏感信息(电子邮件、银行记录等),我个人会完全避免这样做,但如果你坚持这样做,确保你的代码是非常安全的。我应该提到,我只会在一个特定的网站上使用这个脚本,它不会包含任何敏感信息,只是我希望能够轻松解析的数据。有人能解释一下通过Ajax或其他工具使用HTTP来实现这一点的可能性吗?我到处寻找例子,我发现最好的是通过URL信息填写表单的脚本,我认为这不适用于整个页面的源代码。谢谢!Greasemonkey的东西非常适合我的需要。我理解GM_xmlhttpRequest对象中的字段,但是您能告诉我MyScript.php是如何接收信息的吗?我已经使用该代码有一段时间了,我遇到了一个问题。我认为这是因为$\u POST无法查找“SomeData”条目,因为它从未在GM脚本中定义过。我在表单中寻找了一些与name参数等价的参数,但似乎没有。我是否需要其他方法来识别来自GM脚本的数据,或者我只是做了一些完全错误的事情?当你发布数据时,数据的格式应该与URL参数相同,例如
    name1=value1&name2=value2
    -PHP可以查看
    $\u POST['name1']
    $\u POST['name2']
    变量。如果您可以发布您在GM AJAX调用和PHP中使用的代码,我们就可以发现问题了。我唯一的代码就是您提供的GM脚本的一部分,MyScript.PHP以及一些添加的数据库插入/查询,只是为了测试脚本。我是否在设置参数时遗漏了一些步骤?
     var ihtml = document.body.innerHTML;
     GM_xmlhttpRequest({
      method:'POST',
      url:'http://example.com/getData.php',
      data:"PageContents=" + escape(ihtml),
      headers: {'Content-type': 'application/x-www-form-urlencoded'}
     });