2010-12-17 72 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