Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 22.10.2022
Сообщений: 7

Некорректно работает код по проверки прокси на валидность

18.12.2022, 23:35. Показов 643. Ответов 5

Студворк — интернет-сервис помощи студентам
Здравствуйте, написал подобие "прокси чекера" для проверки +- 28к прокси. В чём суть проблемы, ни один ip не является валидным, хотя если проверять их на сайте, такие присутствуют. Не подскажите в чём может быть проблема?

Box - dataclass
Box.headers = {"user-agent": generate_user_agent()}
прокси подаются в массиве, в виде - ip : port (103.206.208.135:5544)

python - 3.10.6
Linux Ubuntu 22.04

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from threading import Barrier, Thread
from colorama import Fore
from items import Box
from typing import Set
import logging
import requests
#---------------------------------------
logger = logging.getLogger(__name__)
#---------------------------------------
 
def ReadTxt():
    array = []
    with open("/home/kwuuuwh/Рабочий стол/SteamBot/ParceProxy/BadProxy.txt", 'r') as file:
        temp = file.readline().strip()
        while temp != "":
            array.append(temp)
            temp = file.readline().strip()
    return array
 
 
def cheack_proxy(proxy_list: list, start: int, workers: int, timeout: int):
    for nproxy in range(start, len(proxy_list), workers):
        proxies = {"http": f"http://proxy_list[nproxy]", "https": f"https://proxy_list[nproxy]"}
        try:
            requests.get(Box.url_cheack, headers=Box.headers, proxies=proxies, timeout=timeout)
            print(Fore.GREEN + f"Good proxy - {proxy_list[nproxy]}")
            barrier.wait()
        except:
            logger.error(Fore.RED + f"Bad proxy - {proxy_list[nproxy]}")
            barrier.wait()
 
 
def run_checking(proxy_list: Set[str], workers: int, timeout: int) -> Set[str]:
    global barrier
    barrier = Barrier(workers)
    for slic in range(workers):
        Thread(target=cheack_proxy, args=(proxy_list, slic, workers, timeout,)).start()
Добавлено через 4 часа 35 минут
Обратил внимание на выход за рамки for в cheack_proxy, в заранее извините
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.12.2022, 23:35
Ответы с готовыми решениями:

Некорректно работает функция, проверяющие входящие данные на валидность
Есть функция, которая проверяет вводные данные. Они должны быть числовыми. Код функции: Function variable() codeclient =...

Некорректно работает функция проверки на численность
Фрагмент кода: //... bool is_number() { //* while(cin.fail()) { cin.clear(); cin.sync(); return false;} return true;...

Проверка на валидность Прокси
Как правильно сделать проверку прокси во время добавления. Допустим указываем путь к файлу и при добавлении чекать.(чекер не вписан) ...

5
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
19.12.2022, 09:05
Цитата Сообщение от Kwuuuuwh Посмотреть сообщение
Python
1
proxies = {"http": f"http://proxy_list[nproxy]", "https": f"https://proxy_list[nproxy]"}
Тут как минимум не хватает фигурных скобок вокруг proxy_list[nproxy]
0
0 / 0 / 0
Регистрация: 22.10.2022
Сообщений: 7
19.12.2022, 10:29  [ТС]
Видимо просто забыл поставить, но в любом случае я пробовал и в фигурных скобках, и просто передавать прокси в список, исход один.

Добавлено через 16 минут
Код без ошибок (вроде):

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from threading import Barrier, Thread
from colorama import Fore
from items import Box
from typing import Set
import logging
import requests
#---------------------------------------
logger = logging.getLogger(__name__)
#---------------------------------------
 
def ReadTxt():
    array = []
    with open("/home/kwuuuwh/Рабочий стол/SteamBot/ParceProxy/BadProxy.txt", 'r') as file:
        temp = file.readline().strip()
        while temp != "":
            array.append(temp)
            temp = file.readline().strip()
    return array
 
 
def cheack_proxy(proxy: str, timeout: int):
        proxies = {'http': f'http://{proxy}', 'https': f'https://{proxy}'}
        try:
            requests.get(Box.url_cheack, headers=Box.headers, proxies=proxies, timeout=timeout)
            print(Fore.GREEN + f"Good proxy - {proxy}")
            barrier.wait()
        except:
            logger.error(Fore.RED + f"Bad proxy - {proxy}")
            barrier.wait()
 
 
def run_checking(proxy_list: Set[str], workers: int, timeout: int) -> Set[str]:
    global barrier
    barrier = Barrier(workers)
    for proxy in proxy_list:
        Thread(target=cheack_proxy, args=(proxy, timeout,)).start()
0
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
19.12.2022, 11:00
Что за исключение выбрасывается?

Цитата Сообщение от Kwuuuuwh Посмотреть сообщение
Python
1
2
3
except:
    logger.error(Fore.RED + f"Bad proxy - {proxy}")
    barrier.wait()
Python
1
2
except Exception as e:
    print(e)
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
19.12.2022, 11:20
Kwuuuuwh, в коде нет вызовов функций, ты точно все приложил?

раз проблема есть, то очевидно что надо пока забыть про файл и потоки и написать код который верно проверит один реально рабочий прокси. Начни с этого - найди живой прокси, сделай на нем удачный запрос, потому уже потоки и барьеры(которые тут не нужны).
1
0 / 0 / 0
Регистрация: 22.10.2022
Сообщений: 7
19.12.2022, 13:33  [ТС]
Я выбрасываю все ошибки.

Код запускаю из другого файла
#launcher.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from ParceProxy.parce import parce_proxy
from ParceProxy.WriteToTxt import WriteToFile
from items import Box
import shutil
import os
 
from ParceProxy.Cheacker_proxy import run_checking
#--SESTINGS-------------------------
TIMEOUT = 6 #Время ожидания запроса к сайту (для прокси чекера)
WORKERS = 50 #Потоки для парсинга
#--VARIABLERS-----------------------
remove_pycashe = ['./__pycache__', './ParceProxy/__pycache__']
#-----------------------------------
 
def main():
    if os.path.isfile("BadProxy.txt"): 
        os.remove("BadProxy.txt")
 
    parce_proxy()
    #run_checking(Box.BadProxy, WORKERS, TIMEOUT)
 
if __name__ == '__main__':
    main()
    #Удаление __pycache__
    [shutil.rmtree(i ,ignore_errors=True) for i in remove_pycashe]
Здесь храню некоторый данные, чтобы не захламлять и не писать по сто раз одно и тоже.

#items.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from user_agent import generate_user_agent
from dataclasses import dataclass
 
@dataclass
class Box:
    url_cheack = "https://icanhazip.com"
    url1 = str = "https://free-proxy-list.net/"
    url2 = str = "http://rootjazz.com/proxies/proxies.txt"
    url3 = str = "https://proxy50-50.blogspot.com/"
    url4 = str = "http://www.httptunnel.ge/ProxyListForFree.aspx"
    url5 = str = "http://www.proxylists.net/http_highanon.txt"
    url6 = str = "https://raw.githubusercontent.com/sunny9577/proxy-scraper/master/proxies.txt"
    url7 = str = "https://multiproxy.org/txt_all/proxy.txt"
    url8 = str = "http://rootjazz.com/proxies/proxies.txt"
    url9 = str = "https://www.proxyhub.me/ru/all-https-proxy-list.html"
    
    BadProxy: any
    headers: any
 
Box.headers = {"user-agent": generate_user_agent()}
Box.BadProxy = []
Добавлено через 14 минут
Сделал так как вы сказали, просмотрел что за ошибка, это была - check_hostname requires server_hostname. Немного полазив по интернету выяснил что проблема заключалась в 23 строчке, а именно
Python
1
proxies = {'http': f'http://{proxy}', 'https': f'https://{proxy}'} => proxies = {'http': f'http://{proxy}', 'https': f'http://{proxy}'}
Спасибо за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.12.2022, 13:33
Помогаю со студенческими работами здесь

Написать чекер на валидность прокси
Всем привет, проблема такая. нужно написать чекер на валидность прокси. работаю с xNet, но отблагодарю за любую помощь. прокси находятся в...

Судоку, функция проверки на валидность
Доброго времени суток, Семпаи. Я новичок в программировании и в частности в освоении языка Питон, так что не судите строго. Вопрос нынче...

Некорректно работает код
Задание: Создайте двухмерный массив, который состоит из 3 рядов и 5 столбцов по правилу mas=i*i-j*3 и выведите его на экран. Найдите...

Некорректно работает код
Доброго времени суток! Столкнулся с проблемой - разные браузеры интерпретируют мой код по-разному. Вот код: <!DOCTYPE html> ...

Некорректно работает код
Добрый день! Ситуация следующая (Лучше смотреть в редакторе работу кода): При начальной загрузке отображается активный текст первого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru