我有兴趣编写一个脚本,最好是一个易于使用Greasemonkey等工具添加到浏览器上的脚本,它将页面的HTML源代码发送到外部服务器,稍后将对其进行解析并发送有用的数据到数据库。
但是,我没有看到类似的东西,我不知道如何处理这项任务。我会想象某种类型的HTTP帖子会是最好的方法,但我对这些想法完全不熟悉,而且我甚至不知道发送数据来解析它的确切位置(发送整个数据没有意义)例如,HTML文档到数据库。
基本上,我的总体目标是这样的(注意我只需要步骤1和2的帮助。我熟悉数据解析技术,我从来没有将它们应用到网络上):
非常感谢任何提示或帮助,谢谢!
编辑:代码
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 :(得分:3)
正如你对Q的评论中提到的,我不相信这是一个好主意,而且就个人而言,我会避免像瘟疫这样做的任何扩展但是......
您可以使用所有html元素上的innerHTML
属性来获取该节点内的HTML - 例如body元素。然后,您可以使用AJAX HTTP(S!)请求发布数据。
您可能还需要考虑某种形式的压缩,因为某些页面可能非常大,大多数用户的下载速度都比上传速度快。
注意:innerHTML
获取将以当前状态显示页面的源代码的表示,而不是从Web服务器发送的实际源 - 例如,如果您使用JS添加元素,该元素的来源将包含在innerHTML
中,即使它从未通过网络发送过。
另一种方法是使用AJAX请求获取当前URL并自行发送响应。这将是发送给客户端的确切内容,但有问题的服务器将知道该页面已被提供两次(并且在一些可能导致问题的Web应用程序中 - 例如通过“按下”删除按钮两次)
最后一个建议是简单地将当前URL发送给您自己并在您自己的服务器上进行下载 - 这也可以减轻某些的安全风险,因为您无法检索非公开页面的内容
编辑:
NB: 我删除了用于追踪问题的大量虚假信息,如果您需要完整的详细信息,请查看编辑日志
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'}
});