簡體   English   中英

Python請求,更改IP地址

[英]Python requests, change IP address

我正在使用以下 Python 代碼為該網站編寫一個網絡爬蟲:

import requests

def scrape(url):
    req = requests.get(url)
    with open('out.html', 'w') as f:
        f.write(req.text)

它工作了幾次,但網站返回了一個錯誤的 HTML 頁面(當我打開瀏覽器時,我有一個驗證碼要完成)。

有沒有辦法通過例如更改 IP 地址來避免這種“禁令”?

正如評論和您自己已經提到的那樣,更改 IP 可能會有所幫助。 要輕松做到這一點,請查看 vpngate.py:

https://gist.github.com/Lazza/bbc15561b65c16db8ca8

鏈接中提供了操作方法。

玩得開心

您可以在請求庫中使用代理。 你可以在幾個不同的網站上找到一些免費的代理,比如https://www.sslproxies.org/http://free-proxy.cz/en/proxylist/country/US/https/uptime/level3但不是所有的他們工作,他們不應該信任敏感信息。

例子:

proxy = {
    "https": 'https://158.177.252.170:3128',
    "http": 'https://158.177.252.170:3128' 
}
response=requests.get('https://httpbin.org/ip', proxies=proxy)

我最近在這里回答了另一個問題,但使用requests-ip-rotator庫通過 API 網關輪換 IP 通常是最有效的方法。
對於每個區域的前一百萬個請求,它是免費的,這意味着您不必將數據提供給不可靠的代理站點。

遲到的答案,我發現這是在尋找 IP 欺騙,但對於 OP 的問題 - 正如一些評論指出的那樣,您可能會或可能不會真正被禁止。 這里有兩點需要考慮:

  1. 軟禁令:他們不喜歡機器人。 過去對我有用的簡單解決方案是添加標題,因此他們認為您是瀏覽器,例如,

    req = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'})

  2. 充當內容門的頁面上活動元素、腳本或彈出窗口,而不是本身的禁令 - 例如,國家/語言選擇器、cookie 配置、調查等需要用戶輸入。 不那么簡單的解決方案:使用像 Selenium + chromedriver 這樣的 webdriver 來渲染包含 JS 的頁面,然后添加“用戶”點擊來處理問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM