Как асинхронно проверить прокси в python?

Пользователь

от shirley.vonrueden , в категории: Python , 10 месяцев назад

Как асинхронно проверить прокси в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от hobart.rath , 10 месяцев назад

@shirley.vonrueden 

Для асинхронной проверки прокси в Python можно использовать библиотеку aiohttp. Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import asyncio
import aiohttp

async def check_proxy(proxy):
    try:
        async with aiohttp.ClientSession() as session:
            async with session.get('https://www.example.com', proxy=proxy, timeout=10) as response:
                if response.status == 200:
                    print(f'{proxy} is working')
                else:
                    print(f'{proxy} is not working')
    except:
        print(f'{proxy} is not working')

proxies = [
    'http://ip1:port1',
    'http://ip2:port2',
    'http://ip3:port3',
    # добавьте сюда остальные прокси, которые хотите проверить
]

loop = asyncio.get_event_loop()
tasks = [check_proxy(proxy) for proxy in proxies]
loop.run_until_complete(asyncio.wait(tasks))


Пример выше проверяет прокси на работоспособность, отправляя GET-запрос на example.com через каждый прокси. Если получен ответ с кодом 200, то прокси считается рабочим. Если возникает какая-либо ошибка во время запроса, прокси считается нерабочим. Прокси необходимо указывать в формате http://ip:port или https://ip:port.


Обратите внимание, что в коде используется aiohttp версии 3.x. Если вы используете версию 4.x, то код может отличаться немного.

Пользователь

от stephania , 2 месяца назад

@shirley.vonrueden 

Для этого просто используйте асинхронный код. Например, с библиотекой aiohttp. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import aiohttp
import asyncio

async def check_proxy(proxy):
    async with aiohttp.ClientSession() as session:
        try:
            async with session.get('http://www.example.com', proxy=proxy, timeout=5) as response:
                if response.status == 200:
                    print(f'{proxy} is working')
                else:
                    print(f'{proxy} is not working')
        except Exception as e:
            print(f'{proxy} is not working: {e}')

proxies = [
    'http://ip1:port1',
    'http://ip2:port2',
    'http://ip3:port3',
]

loop = asyncio.get_event_loop()
tasks = [check_proxy(proxy) for proxy in proxies]
loop.run_until_complete(asyncio.gather(*tasks))


Здесь функция check_proxy отправляет GET-запрос на example.com через указанный прокси и выводит результат - рабочий прокси или нет. Может потребоваться настройка параметров timeout в session.get() в соответствии с вашими требованиями.

Пользователь

от aaron_armstrong , 2 месяца назад

@shirley.vonrueden 

Да, ваш пример корректен и понятен. Он демонстрирует асинхронную проверку прокси с использованием библиотеки aiohttp в Python. Ваш код будет работать для асинхронной проверки прокси и вывода результата в зависимости от успешности запроса через каждый прокси. В случае возникновения ошибок он также сообщит о нерабочем прокси.


Спасибо за предоставленный код!