国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python代理IP異常:requests.exceptions.ProxyError: HTTPSConnectionPool(host=‘xxxx‘, port=443)

這篇具有很好參考價值的文章主要介紹了Python代理IP異常:requests.exceptions.ProxyError: HTTPSConnectionPool(host=‘xxxx‘, port=443)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

requests.exceptions.proxyerror,《常見異常處理》,python,requests,HTTPSConnection

背景

? ? ? ? 這是我在使用Python爬取網(wǎng)頁信息的時候出現(xiàn)的異常。

? ? ? ? 由于很多要爬取的網(wǎng)站會把“IP限制”作為反爬蟲手段,所以我偶爾會使用“代理IP服務(wù)器”去處理相關(guān)需求,因為我覺得每次都 time.sleep(10)?太漫長,對頻繁且大量的請求十分不友好。

? ? ? ? 推薦代理服務(wù)器:

  • 太陽HTTP - 全國優(yōu)質(zhì)代理IP服務(wù)商
  • 四葉天 - 一站式HTTP代理服務(wù)提供商

正文

????????針對這個問題,我查閱了許多前輩的博客,并且親自編寫的了大量代碼測試,總結(jié)出了下面的幾種場景。

一. 異常描述

? ? ? ? 下面在控制臺打印的異常信息,為了隱藏公司真實場景,我把請求地址換成了“www.baidu.com”:

????????requests.exceptions.ProxyError: HTTPSConnectionPool(host='www.baidu.com', port=443): Max retries exceeded with url: / (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x000001E1F80374E0>: Failed to establish a new connection: [WinError 10061] 由于目標計算機積極拒絕,無法連接。')))

????????大概意思就是:請求地址的HTTP連接池(host =‘www.baidu.com’,port = 443):URL超過了最大重試次數(shù)。由代理錯誤(‘無法連接到代理服務(wù)器。’,NewConnectionError(‘:無法建立新的連接:[WinError 10061]無法連接’。))


二. 原因分析

1. 代理demo編寫不規(guī)范

????????任何情況下都不能排除人為因素,因為人為的編寫不規(guī)范從而導(dǎo)致連接不上,好好檢查代碼,按照代理商給的例子書寫。

2. ip被封

? ? ? ? 首先想到的原因就是IP被封掉了,這個無可厚非,既然我們使用偽裝的IP進行爬蟲作業(yè),不可避免的會被瀏覽器識別出來并加入黑名單。

2. 連接超限

???? ? ?根據(jù)異常描述里提到的?HTTP 連接池的問題,很可能是連接數(shù)超過最大限制。這是因為我們發(fā)起的請求默認情況下連接是Keep-alive(?;睿┑?,所以這就導(dǎo)致了服務(wù)器保持了太多連接而不能再新建連接。


三. 解決辦法

? ? ? ? 辦法千千萬,原理就一個:想辦法讓瀏覽器認為你的操作并不是同一個IP頻繁發(fā)起的網(wǎng)頁攻擊,防止IP被封。

? ? ? ? 下面的方法并不是非你即我的,可以任選其一,也可以全部都用上。引申一點,常見的反爬蟲的破解思路也大如此,值得好好學習一下。

方法一:偽裝Headers

? ? ? ? 針對具備【身份辨別】功能的反爬蟲頁面,在請求的時候,需要偽裝Headers才能進行訪問,否則請求會被拒絕。所以我們再每次請求的時候,隨機一個?'user-agent'。

? ? ? ? 解釋下user-agent,中文名為用戶代理,它存在的目的就是:讓服務(wù)器能夠識別客戶使用的操作系統(tǒng)及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等信息。如果沒有,就說明請求不是來自有瀏覽器,那就可能是接口請求。

? ? ? ? 部分反爬蟲技術(shù),就是通過user-agent去鑒別瀏覽器身份,識別瀏覽器的請求是否合法。

# 常見的 user-agent 列表
headers_list = [
    {
        'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 10; SM-G981B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (iPad; CPU OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/87.0.4280.77 Mobile/15E148 Safari/604.1'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.109 Safari/537.36 CrKey/1.54.248666'
    }, {
        'user-agent': 'Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.188 Safari/537.36 CrKey/1.54.250320'
    }, {
        'user-agent': 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+'
    }, {
        'user-agent': 'Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML like Gecko) Version/7.2.1.0 Safari/536.2+'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; SM-N900T Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; U; Android 4.1; en-us; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; U; Android 4.0; en-us; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 7.0; SM-G950U Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; SM-G965U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 8.1.0; SM-T837A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; U; en-us; KFAPWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/102.0.0.0 Mobile Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/14.14263'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 6.0.1; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 520)'
    }, {
        'user-agent': 'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PQ1A.181105.017.A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 11; Pixel 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.181 Mobile Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36'
    }, {
        'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1'
    }, {
        'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
    }, {
        'user-agent': 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1'
    }
]

headers = random.choice(headers_list)

????????以“豆瓣電影一周排行榜”為例,偽裝了headers之后,我們能正常爬取出電影的排名信息(data僅用于展示效果,還未做數(shù)據(jù)清洗):

url = 'https://movie.douban.com/chart'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
ret = Request(url, headers=headers)
res = urlopen(ret)
data = res.read().decode('utf-8')
print(data)

? ? ? ? 嘗試一下去掉代碼中的“headers”偽裝直接打開url,看看能不能爬到信息?答案是:打不開,會出現(xiàn)“urllib.error.HTTPError: HTTP Error 418”異常。

url = 'https://movie.douban.com/chart'
res = urlopen(url)
data = res.read().decode('utf-8')
print(data)

方法二:偽裝IP

? ? ? ? ?正常的ip不可能在1秒之內(nèi)請求同一個網(wǎng)頁100次,哪怕10次也不可能,反爬技術(shù)正是針對這一場景進行IP的封鎖,所以我們能做的,就是降低同一個IP的使用頻率。

  • 如果非要用同一IP,那就:循環(huán)抓錯,重復(fù)請求,逐步延長等待時間
def get_url(url, headers):
    try:
        # 超時設(shè)置為10秒
        response = requests.get(url, headers=headers, timeout=10)  
    except:
        # 循環(huán)去請求網(wǎng)站
        for i in range(4):
            # 延長等待時間,超時設(shè)置為20秒
            response = requests.get(url, headers=headers, timeout=20)
            if response.status_code == 200:
                break
    html_str = response.text
    return html_str
  • 如果不要求同一IP,那當然是:換一個新的IP

????????如果在使用代理IP的時候出現(xiàn)拒絕訪問的字樣,那就說明服務(wù)器已經(jīng)抓取到你真實的IP地址,在這種情況下,只有再一次更換IP地址才能繼續(xù)訪問。

? ? ? ? 或者,就是使用的代理IP已經(jīng)被很多人使用過了,所以才會被瀏覽器封掉,一般這種情況多出現(xiàn)在免費代理IP上。文章來源地址http://www.zghlxwxcb.cn/news/detail-778153.html

# 多申請幾個ip,依此循環(huán)使用,或者每次隨機一個使用
ips_list = [ip1, ip2, ip3, ip4, ip5]
ip = random.choice(ips_list)

到了這里,關(guān)于Python代理IP異常:requests.exceptions.ProxyError: HTTPSConnectionPool(host=‘xxxx‘, port=443)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包