Библиотека requests не использует proxy

Kwuuuwh

Новичок
Пользователь
Авг 1, 2022
11
0
1
Добрый день, я столкнулся с такой проблемой, что при использовании прокси в requests подключение производится не через тот proxy который я подал, а через мой статический ip.

win-10
python 3.11.1
requests 2.28.2

Кусок кода который я использую для проверки прокси
Python:
from src.Modules import setup_logger, get_html_req, storage
from concurrent.futures import ThreadPoolExecutor

logger = setup_logger("checking_proxy")

def handler(proxy: str, protocol: str):
    proxies = {protocol: f'{protocol+"s" if protocol == "http" else protocol}://{proxy}'}
    try:
        response = get_html_req(f_proxy=True, proxies=proxies)
        storage.proxy[protocol].append(proxy)
        print(response)
        logger.info(f"God - {protocol} - {proxy}")
    except Exception:
        logger.debug(f"Bad - {protocol} - {proxy}")

def run_check_proxy():
    logger.info("Start check proxy...")
    for protocol in storage.bad_proxy:
        for proxy in storage.bad_proxy[protocol]:
            with ThreadPoolExecutor(storage.workers) as executor:
                futures = []
                futures.append(executor.submit(handler, proxy, protocol))

функция get_html_req
Python:
from .storage import storage
from bs4 import BeautifulSoup
from typing import Optional
import requests

def get_html_req(f_proxy: bool, url: Optional[str] = None, proxies = None) -> str:
    if f_proxy:
        return requests.get(url=storage.url_check, timeout=storage.timeout, proxies=proxies).text
    else:
        if url == None:
            print('url not specified')
            exit()
        return requests.get(url=url, headers=storage.headers, timeout=storage.timeout).text

storage
Python:
from dataclasses import dataclass
from fake_useragent import UserAgent


@dataclass
class storage:
    # for parse
    headers = {"user-agent": UserAgent()["chrome"]}
    timeout = 3
    proxy_time_update = 600

    # for proxy
    url_check = "https://ipinfo.io/json"
    bad_proxy = {"http": [], "https": [], "socks4": [], "socks5": []}
    proxy = {"http": [], "https": [], "socks4": [], "socks5": []}

    # Settings
    workers = 70
 
Последнее редактирование:

robisho

Активный пользователь
Пользователь
Окт 19, 2020
151
26
28
попробуйте использовать прокси в объекте Session.
Python:
with requests.Session() as session:
    session.proxy = proxy
    response = session.get(url, headers)
 

Kwuuuwh

Новичок
Пользователь
Авг 1, 2022
11
0
1
попробуйте использовать прокси в объекте Session.
Python:
with requests.Session() as session:
    session.proxy = proxy
    response = session.get(url, headers)
Так же
 

Kwuuuwh

Новичок
Пользователь
Авг 1, 2022
11
0
1
вопщем, проблема была в списке подаваемому requests
 

Форум IT Специалистов