aiohttp调用Socks5代理
Python3使用aiohttp调用Socks5代理IP的代码样例
温馨提示:
基于aiohttp的代码样例支持访问http,https网页
aiohttp不是python原生库,需要安装才能使用:
pip install aiohttp, pip install aiohttp-socks
aiohttp只支持Python3.5及以上
如果在Windows系统使用aiohttp访问https网站时抛出异常,可以在import asyncio后调用
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
来解决。
使用代码示例
import aiohttp
import aiohttp_socks
import asyncio
async def fetch(url, proxy):
# 设置代理连接器
connector = aiohttp_socks.ProxyConnector.from_url(proxy)
async with aiohttp.ClientSession(connector=connector) as session:
async with session.get(url) as response:
print(f"Status: {response.status}")
print(await response.text())
# 若是用户名密码授权,需要带上user和password,若是终端IP授权则不需要
proxy_url = "socks5://user:password@ip:port"
# 抓取目标的URL
url_to_fetch = "http://api.91http.com/v1/tool/get-my-ip"
asyncio.run(fetch(url_to_fetch, proxy_url))
:::tip
aiohttp 抛出 ssl 错误,例如Cannot connect to host http://www.xxx.com:443 ssl:default
,在 aiohttp 包的文件中找到 connector.py
这个文件(在 aiohttp 的根目录下),将 runtime_has_start_tls = self._loop_supports_start_tls()
这一行注释掉,然后在其下面新增一行 runtime_has_start_tls = False if req.proxy.scheme != "https" else self._loop_supports_start_tls()
即可。如图所示
:::
最后修改时间: 1 个月前