2015-07-19 30 views
0

我正在尋找識別打開html文件(使用Python)時會發出的DNS請求。具體來說,我期待看到哪些域資源將從網頁瀏覽器中打開時加載。我實際上並不想提出DNS請求或加載外部資源,只需確定它們將會是什麼(或更具體地說,它們將來自何處)。使用Python捕獲打開html的DNS請求

(我有一堆[百萬]的HTML文件,我想確定哪些域會嘗試從中加載外部資源)。

我認爲必須有一個Python包可以幫助這個,但似乎無法找到它 - 尋找一個正確的方向,而不是完全開發的代碼。

+0

在Linux命令行上試試這個:'grep -r -o -P'(?<= http://)[^ /「] *(?= [/ \」])'2>/dev/null | grep -P -o'(?<=:)。*'|排序-u'。 – User

回答

1

很抱歉地說,但是,很少見的情況是,Python將是您實現目標所需的最後一件事。這是因爲在Python中,您無法以發佈相關Web請求的方式解釋HTML,Python也不是您的計算機上查找DNS的最佳工具。

我寧願建議使用可腳本化的無頭瀏覽器(如PhantomJS)來請求存檔中的所有HTML頁面(最好通過本地Web服務器)。然後,無頭服務器不僅可以讀取HTML源代碼(作爲python requests.get左右),還可以解釋嵌入式JavaScript並加載遠程文件(如CSS樣式表),圖像等。只有這樣才能生成所需的DNS查找學習關於。

然後,您應該安裝一個本地「間諜」DNS服務器,您可以控制該DNS服務器以查找哪些DNS條目被查找。一個很好的教程,如何在Linux下建立這樣的服務器可以找到here。是的,Python也有空間,因爲你需要分析和壓縮你的「間諜」DNS服務器的日誌文件。