Сбой http-запроса прокси-сервера Python

#python #beautifulsoup #python-requests

#питон #прекрасный суп #python-запросы

Вопрос:

ИСПРАВИЛ ЭТО САМ — Изменил list.append(i) на list.append(i.strip())

Я пытаюсь выполнить простой http-запрос с помощью прокси-сервера, который отлично работает, если я жестко закодирую имя пользователя и пароль. В тот момент, когда я пытаюсь использовать функцию разделения для извлечения этих данных из текстового файла, она терпит неудачу, я не слишком уверен, почему. Я не получаю ошибку python, просто сообщение об ошибке с прокси-сайта о том, что я не прошел аутентификацию.

Данные прокси-сервера в моем текстовом файле выглядят следующим образом: blah1.proxy.com: 33128: dummyusername!123:пароль blah2.proxy.com: 33128: dummyusername!456:пароль

 import requests
from requests.auth import HTTPProxyAuth
from itertools import cycle

list = []

f = open("C:proxiesproxies.txt", "rt")

for i in f:

    list.append(i)


proxy_pool = cycle(list)


#Get a proxy from the pool
proxy = next(proxy_pool)


prox = {
    'http': "http://"   i.split(':')[2]   ":"   i.split(':')[3]   "@"   i.split(':')[0]   ":"   i.split(':')[1]
}

ext_ip = requests.get('http://checkip.dyndns.org', proxies=prox)

print (ext_ip.text)
 

Не уверен, почему это не удается, но если я жестко закодирую имя пользователя и пароль вместо использования команды split, это сработает. Я попытался напечатать команду split, и она печатает правильное имя пользователя и пароль.

Ответ №1:

Попробуй:

 import requests
from requests.auth import HTTPProxyAuth
from itertools import cycle

list = []

f = open("C:proxiesproxies.txt", "rt")

for i in f:
    list.append(i)


proxy_pool = cycle(list)


#Get a proxy from the pool
proxy_str = next(proxy_pool)
splitted = proxy_str.split(":")
proxy_url = f"http://{splitted[2]}:{splitted[3]}@{splitted[0]}:{splitted[1]}"

proxy = {'http': proxy_url}

ext_ip = requests.get('http://checkip.dyndns.org', proxies=proxy)

print (ext_ip.text)
 

Комментарии:

1. к сожалению, это тоже не работает, мой прокси-провайдер возвращает «ОШИБКА: отказано в доступе к кешу».

2. Иногда вам просто нужно определить переменную окружения http_proxy и https_proxy. Но ваша проблема, похоже, находится на другом уровне.