2010-12-17 41 views
2

我有兴趣编写一个脚本,最好是一个容易添加到使用诸如Greasemonkey等工具的浏览器,它将页面的HTML源代码发送到外部服务器,稍后它将在其中分析和有用的数据将被发送到数据库。发送源代码到外部服务器

但是,我还没有看到这样的事情,我不知道如何处理这个任务。我会想象某种HTTP post是最好的方法,但我对这些想法完全陌生,而且我甚至不会在哪里发送数据来解析它(发送整个数据是没有意义的例如HTML文档到数据库)。因此基本上,我的总体目标是这样工作的(请注意,我只需要步骤1和2的帮助。我熟悉数据解析技术,我从来没有将它们应用到网络上):

  1. 用户查看特定网页
  2. 源代码经由Greasemonkey的或一些其它工具发送到该代码被解析成有意义的数据的服务器
  3. 存储在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 
+0

这听起来像的东西,将用于广告或类似的行为定位 - 要知道,有问题的网页源代码可能包含敏感信息(电子邮件,银行记录等)就个人而言,我会完全避免这种情况,但如果您坚持这样做,请确保您的代码非常安全。 – Basic 2010-12-18 00:00:24

回答

3

正如你的Q上的评论中提到,我不认为这是一个好主意,就个人而言,我'd避免任何扩展,这样做就像瘟疫,但...

您可以使用所有html元素上可用的innerHTML属性获取该节点内的HTML - 例如正文el EMENT。然后,您可以使用AJAX HTTP(S!)请求发布数据。

您可能还想考虑某种形式的压缩,因为某些页面可能非常大,而且大多数用户的下载速度比上传速度更快。

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

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

最后一个建议是简单地将当前的URL发送给自己,做下载自己的服务器上 - 这也将减轻安全风险一些你止跌”无法逐一检索内容是在不公开

编辑页面:

注:我已经删除了这是在追查问题使用了许多伪造的信息,请查看编辑日志,如果你想要全部细节

PHP代码:

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

的GreaseMonkey脚本:

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'} 
}); 
+0

我应该提到我只会在一个特定的网站上使用这个脚本,它不会包含任何敏感信息,只是我想要解析的数据。有人可以解释通过Ajax或其他工具使用HTTP的可能性吗?我已经找过各种示例,我发现的最好的脚本是通过URL信息填充表单的脚本,我认为这些脚本不适用于整个页面的源代码。 – Chris 2010-12-18 00:15:55

+0

我编辑了我的答案更多详细信息 – Basic 2010-12-18 00:33:10

+0

谢谢! Greasemonkey中的东西非常适合我的需求。我了解GM_xmlhttpRequest对象中的字段,但是您能否告诉我MyScript.php如何接收信息? – Chris 2010-12-18 03:09:27