Ошибка при объединении прокси с использованием модуля Python pyChainedProxy.Python

Программы на Python
Ответить
Anonymous
 Ошибка при объединении прокси с использованием модуля Python pyChainedProxy.

Сообщение Anonymous »

У меня есть скрипт Python, который я написал для связывания прокси-серверов Socks5 с сайта geonode.com с помощью модуля Python pychainedproxy. Это сценарий, который я собираюсь использовать как для обеспечения анонимности сетевых, так и для общесистемных запросов.
Я сохраняю прокси-серверы из ответа API в файле proxies.txt в следующем формате:носки5!192.168.1.1!80 /n
носки5!202.218.6.9!8080 /n
носки5!182.204.57.912!8080 /n
...
Там около 500 прокси и портов, разделенных восклицательным знаком-разделителем и далее новой строкой. (Я использовал этот разделитель, потому что он предпочтительнее двоеточия (:), согласно документации модуля.
Используя функцию socks.parseproxy(), я собираюсь передавать каждую строку как кортеж в функцию adddefaultproxy(), а затем распаковать аргументы (socks5, proxy, port) в функцию, а затем проанализировать их и добавить в цепочку.
Использование функции все как в документации модуля, за исключением того, что в документации цепочка представляет собой список прокси.
Когда я запускаю код, он выводит следующую ошибку:
"С сервера были получены неожиданные данные"
Когда я просмотрел спецификации ошибок в репозитории GitHub, ошибка относится к классу GeneralProxyError. Вот она:
class GeneralProxyError — при возникновении указывает на проблему, которая не попадает
в другую категорию. Параметр представляет собой кортеж, содержащий код ошибки и
описание. ошибка из следующего списка:
1 - неверные данные. Эта ошибка означает, что с
сервера были получены непредвиденные данные. Наиболее распространенная причина заключается в том, что сервер, указанный в качестве прокси,
на самом деле не является прокси-сервером Socks4/Socks5/HTTP, или, возможно, указан неправильный тип прокси.
Из API geonode , прокси — это socks5, и это то, что также используется в коде.
Вот код:

Код: Выделить всё

#Importing dependencies
import pyChainedProxy as socks
import socket
import requests

url = 'https://proxylist.geonode.com/api/proxy-list?anonymityLevel=elite&protocols=socks5&filterUpTime=90&speed=fast&limit=500&page=1&sort_by=lastChecked&sort_type=desc'

#Making request to the API

response = requests.get(url)
response.raise_for_status()  # Check for HTTP request errors
page = response.json()

proxies = page['data']
# Loop through the list of proxies and passing the IP and each corresponding PORT value to a txt file

with open('proxies.txt', 'w') as file:

for proxy in proxies:
ip = proxy.get('ip')
port = proxy.get('port')
protocols = proxy.get('protocols')
proxy_type = ", ".join(protocols)
file.write(f"{proxy_type}!{ip}!{port}\n")

with open('proxies.txt', 'r') as file:
#Read the entire file content
content = file.read()
print(content)

def DEBUG(msg):
print(msg)
socks.DEBUG = DEBUG

print("Check IP w/o proxyfying: ", requests.get('http://ip-api.com/json').content)

#PROXY_TYPE = socks.PROXY_TYPE_SOCKS5

with open('proxies.txt', 'r') as file:

chain = [line.strip() for line in file.readlines()]  # Read proxies from file and strip any newlines

socks.setdefaultproxy()
for hop in chain:
try:
# Expect format: proxy:port
proxy_address = hop.strip()  # No need to split, we assume the type is SOCKS5
socks.adddefaultproxy(*socks.parseproxy(hop))
except Exception as e:
print(f"Error processing proxy entry '{hop}': {e}")

# Replace socket with proxy-enabled one
rawsocket = socket.socket
socket.socket = socks.socksocket

# Print IP with proxy chain
print("Check IP with proxyfying: ", requests.get('http://ip-api.com/json').content)
В чем может быть проблема?
Я пробовал заменить восклицательный знак двоеточием, а также напрямую получить тип прокси из json. вместо того, чтобы указывать это в коде.

Подробнее здесь: https://stackoverflow.com/questions/790 ... hon-module
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»