2016-05-05 70 views
0

我想爲我的研究做一些網絡抓取項目。不幸的是,我需要嘗試和颳去一些阻止我的請求的Google學術搜索數據。我試過使用(多個)http代理,但是我的請求在~300次嘗試後仍然被阻塞。Python請求庫與代理 - 獲取請求仍然發送我自己的IP

從被禁止的請求生成的HTML包含:

IP address: 145.109...<br/>Time: 2016-05-05T09:23:37Z<br/>URL: 
https://scholar.google.nl/citations?hl=en&amp;view_op=search_authors 
&amp;mauthors=Perry<br/> 

以上IP是我自己,而我代理的dict(從隨機列表中選擇一個代理)和get請求是這樣的:

proxies = {'http': 'http://<username>:<password>@107.182....:<port>'} 

result = requests.get('https://scholar.google.nl/citations?hl=en&   
         amp;view_op=search_authors&amp;mauthors=Perry', 
         proxies=proxies, headers=headers) 

IP的當然是有效的,工作和我自己的ip不包括在代理列表中。難道我做錯了什麼?

編輯:爲了完整性,我也嘗試設置驗證,如this答案建議,但結果是一樣的。

+0

什麼是''?如果以'http'爲關鍵字的更多條目,這是一個字典,只有一個將被保留。並且您正在請求https網址,因此如果您的代理字典中沒有https條目,則不會使用代理服務器。 – mata

+0

措辭嚴厲,我會編輯我的問題。代理實際上包含在一個列表中,它隨機選擇一個並將其添加到字典中。但它是https和代理http解決了這個問題。你可能會添加它作爲答案,所以我可以選擇它?非常愚蠢的是,我錯過了 - _-,謝謝! – Truub

回答

2

在您的proxies字典中,url方案與您請求中使用的字典不匹配,因此您使用代理的http條目,但接着發出https請求。如果您是https計劃的代理商,那麼它應該有效。