解決python異步框架aiohttp無法使用本地代理問題
更新時間:2024年07月18日 09:06:54 作者:FOAF-lambda
這篇文章主要介紹了解決python異步框架aiohttp無法使用本地代理問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
問題
- aiohttp 在全局代理模式下無法訪問墻外的網(wǎng)址,而requests可以
- aiohttp不支持https代理,無論訪問的網(wǎng)址是http還是https,使用代理是字符串proxy='http://127.0.0.1:10080'
import aiohttp
import asyncio
headers = {
'User-Agent': "mozilla/5.0 (windows nt 6.1; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/69.0.3494.0 safari/537.36",
}
async def fetch(session,url):
async with session.get(url=url,headers=headers,timeout=50,verify_ssl=False,proxy='http://127.0.0.1:10080') as resposne:
print(resposne.status)
return await resposne.text()
async def main():
async with aiohttp.ClientSession() as session:
url='https://www.google.com'
html = await fetch(session,url)
print(html)
loop = asyncio.get_event_loop()
loop.run_until_complete(main()) - 當session.get里面不傳入proxy時
- 會根據(jù)ClientSession里面的一個參數(shù)叫trust_env是否為True來使用本地代理
- 但源碼中的使用條件是
elif self._trust_env:
for scheme, proxy_info in proxies_from_env().items():
if scheme == url.scheme:
proxy = proxy_info.proxy
proxy_auth = proxy_info.proxy_auth
break- scheme == url.scheme 這個條件阻擋了請求https網(wǎng)址
- aiohttp不支持https代理
- 所以這是一個矛盾的地方
解決方式1
- 修改源碼
- 對scheme == url.scheme這個條件進行修改
- 并且在aiohttp.ClientSession(trust_env=True)傳入trust_env=True
- 這種方式不提倡
解決方式2
- 獲取本地代理
- 然后在沒有代理時在session.get使用本地代理
def get_local_proxy():
from urllib.request import getproxies
proxy = getproxies()['http']
#proxies = {'http': 'http://127.0.0.1:10809', 'https': 'http://127.0.0.1:10809'}
proxies = {'http': proxy , 'https': proxy}
return proxies總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
通過Python實現(xiàn)自動填寫調(diào)查問卷
這篇文章主要介紹了通過Python實現(xiàn)自動填寫調(diào)查問卷的相關(guān)資料,需要的朋友可以參考下2017-09-09
如何在Win10系統(tǒng)使用Python3連接Hive
這篇文章主要介紹了如何在Win10系統(tǒng)使用Python3連接Hive,幫助大家更好的利用python讀取數(shù)據(jù),進行探索、分析和挖掘工作。感興趣的朋友可以了解下2020-10-10
Python全自動實現(xiàn)Excel數(shù)據(jù)分列
在 Excel 數(shù)據(jù)處理中,數(shù)據(jù)分列是高頻剛需操作,本文將使用免費 Excel 處理庫,通過 Python 實現(xiàn)全自動單列拆分多列,并對比 Excel 自帶分列與 VBA 方案,幫你快速選出最合適的處理方式2026-04-04
python實現(xiàn)將html表格轉(zhuǎn)換成CSV文件的方法
這篇文章主要介紹了python實現(xiàn)將html表格轉(zhuǎn)換成CSV文件的方法,涉及Python操作csv文件的相關(guān)技巧,需要的朋友可以參考下2015-06-06
使用OpenCV實現(xiàn)道路車輛計數(shù)的使用方法
這篇文章主要介紹了使用OpenCV實現(xiàn)道路車輛計數(shù)的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Python中判斷語句入門指南(if?elif?else語句)
if elif else語句是Python中的控制語句,用于根據(jù)條件執(zhí)行不同的操作,下面這篇文章主要給大家介紹了關(guān)于Python中判斷語句入門指南(if?elif?else語句)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-05-05

