HTTP ਪ੍ਰਾਕਸੀ ਰਾਹੀਂ ਇੱਕ aiohttp ਬੇਨਤੀ
aiohttp ਨਾਲ ਬਿਨਾਂ ਪ੍ਰਮਾਣੀਕਰਨ HTTP ਪ੍ਰਾਕਸੀ ਬੇਨਤੀ ਭੇਜੋ, ਸਥਿਤੀ ਜਾਂਚੋ ਅਤੇ ਸਪਸ਼ਟ ਅਸਿੰਕ੍ਰੋਨਸ ਜੀਵਨਚੱਕਰ ਵਿੱਚ ਪੂਰੀ ਕਰੋ।
ਬਿਨਾਂ ਪ੍ਰਮਾਣੀਕਰਨ HTTP ਪ੍ਰਾਕਸੀ ਰਾਹੀਂ ਇੱਕ ਅਸਿੰਕ੍ਰੋਨਸ ਬੇਨਤੀ ਲਈ ਰਾਹ session.get() ਉੱਤੇ ਰੱਖੋ। ਲੋੜ ਹੋਵੇ ਤਾਂ ਪ੍ਰੋਜੈਕਟ ਵਿੱਚ aiohttp ਜੋੜੋ:
uv add aiohttpਹੇਠਲਾ ਦਸਤਾਵੇਜ਼ੀ ਪਤਾ ਆਪਣੇ HTTP ਲਿਸਨਰ ਜਾਂ HTTP ਪ੍ਰਾਕਸੀ ਸੂਚੀ ਦੇ ਉਮੀਦਵਾਰ ਨਾਲ ਬਦਲੋ। ਉਸਨੂੰ HTTPS ਮੰਜ਼ਿਲ ਤੱਕ CONNECT ਦੀ ਆਗਿਆ ਦੇਣੀ ਚਾਹੀਦੀ ਹੈ; ਸਿਰਫ਼ SOCKS ਐਂਡਪੁਆਇੰਟ ਨੂੰ ਇਸ proxy ਆਰਗੂਮੈਂਟ ਦੀ ਥਾਂ ਢੁਕਵਾਂ ਕਨੈਕਟਰ ਚਾਹੀਦਾ ਹੈ।
import asyncio
import aiohttp
async def main():
timeout = aiohttp.ClientTimeout(total=15, connect=5)
async with aiohttp.ClientSession(
timeout=timeout,
trust_env=False,
) as session:
async with session.get(
"https://example.com/",
proxy="http://203.0.113.10:8080",
) as response:
print(response.status)
print((await response.text())[:200])
asyncio.run(main())
ਬੇਨਤੀ HTTP ਸਥਿਤੀ ਅਤੇ ਜਵਾਬ ਦੇ ਲਿਖਤ ਦੇ ਪਹਿਲੇ 200 ਅੱਖਰ ਦਿਖਾਉਂਦੀ ਹੈ। ਇੱਥੇ 403 ਜਾਂ 429 ਵੀ ਜਾਂਚਯੋਗ ਜਵਾਬ ਰਹਿੰਦਾ ਹੈ; ਐਪ ਨੇ ਅਸਫਲ ਸਥਿਤੀਆਂ ਨੂੰ ਐਕਸੈਪਸ਼ਨ ਬਣਾਉਣਾ ਹੋਵੇ ਤਾਂ response.raise_for_status() ਕਾਲ ਕਰੋ। ਅਸਿੰਕ੍ਰੋਨਸ ਕਨਟੈਕਸਟ ਮੈਨੇਜਰ ਬਲਾਕ ਮੁੱਕਣ ਉੱਤੇ ਸੈਸ਼ਨ ਅਤੇ ਜਵਾਬ ਬੰਦ ਕਰਦੇ ਹਨ, ਐਕਸੈਪਸ਼ਨ ਹੋਵੇ ਤਾਂ ਵੀ।
15 ਸਕਿੰਟ ਦਾ total ਬਜਟ ਬੇਨਤੀ ਦੀ ਕਾਰਵਾਈ ਨੂੰ ਕਵਰ ਕਰਦਾ ਹੈ। 5 ਸਕਿੰਟ ਦੇ connect ਬਜਟ ਵਿੱਚ ਪੂਲ ਵਿੱਚ ਖਾਲੀ ਕਨੈਕਸ਼ਨ ਦੀ ਉਡੀਕ ਵੀ ਹੈ, ਇਸ ਲਈ ਵਿਅਸਤ ਪੂਲ ਨਵਾਂ ਸਾਕਟ ਖੁੱਲ੍ਹਣ ਤੋਂ ਪਹਿਲਾਂ ਇਹ ਖਰਚ ਸਕਦਾ ਹੈ। ਇੱਕ ਕਾਲ ਨੂੰ ਸਮਕਾਲੀ ਜਾਂਚਾਂ ਵਿੱਚ ਬਦਲਣ ਸਮੇਂ ਇਹ ਫਰਕ ਅਹਿਮ ਹੈ।
trust_env=False ਦਿਖਾਇਆ ਰਾਹ ਸਪਸ਼ਟ ਰੱਖਦਾ ਹੈ। aiohttp ਡਿਫਾਲਟ ਤੌਰ ’ਤੇ ਪ੍ਰਾਕਸੀ ਵਾਤਾਵਰਨ ਵੇਰੀਏਬਲ ਨਹੀਂ ਲੱਭਦਾ; ਦੂਜੇ ਟਰਮੀਨਲ ਵਿੱਚ ਇੱਕ ਐਕਸਪੋਰਟ ਕਰਨਾ ਇਹ ਕਾਲ ਸੰਰਚਿਤ ਨਹੀਂ ਕਰੇਗਾ। trust_env=True ਕੇਵਲ ਜਦੋਂ ਪ੍ਰਕਿਰਿਆ ਦਾ ਵਿਰਸੇ ਵਿੱਚ ਮਿਲਿਆ ਵਾਤਾਵਰਨ ਚਾਹੀਦੀ ਰਾਊਟਿੰਗ ਨੀਤੀ ਹੋਵੇ ਤਦ ਚੁਣੋ।