我管理了很多HTTPS代理(這些代理具有自己的SSL連接)。我在python中構建了一個診斷工具,它嘗試通過每個代理連接到一個頁面,如果它無法通過其中一個連接,就會通過電子郵件發送給我。測試python中的HTTPS代理
我開始討論的方式是使用urllib通過每個代理進行連接,並返回一個應該用下面的代碼說「成功」的頁面。
def fetch(url):
connection = urllib.urlopen(
url,
proxies={'http':"https://"+server+':443'}
)
return connection.read()
print fetch(testURL)
此獲取我想要的頁面完美的問題是,它仍然會取我想即使代理服務器信息不正確或代理服務器是不活動的頁面。因此,它不會使用代理服務器,或者它嘗試它並在失敗時連接沒有它。
我該如何解決這個問題?
編輯:沒有人似乎知道如何做到這一點。我將開始閱讀其他語言庫,以查看它們是否可以更好地處理它。有誰知道在Go等其他語言中它更容易嗎?
編輯:我只是在下面的評論中寫了這個,但我認爲這可能是一個誤解。 「代理有它自己的SSL連接,所以如果我去google.com,我首先與foo.com進行密鑰交換,然後再與目標地址bar.com或目的地址baz.com進行密鑰交換。目的地不會'不得不是https,代理是https「
我試過了。它沒有幫助。在這種情況下請求的好處是什麼? – 2014-09-12 23:45:41
好了,所以我使用數據包捕獲在我的環境中運行了它,它顯示urllib沒有向代理髮送CONNECT請求,這是不正確的。然後我閱讀https://docs.python.org/2/howto/urllib2.html,其中規定「目前urllib2不支持通過代理獲取https位置。但是,可以通過擴展urllib2來啓用它,如食譜http://code.activestate.com/recipes/456195。我建議請求Python模塊,因爲它似乎更簡單,更容易使用,嘗試使用urllib實現這一點 – Yuvika 2014-09-13 12:26:39