Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: Как в Python сделать прокси-сервер для HTTP-прокси?

  1. Как в Python сделать прокси-сервер для HTTP-прокси?

    Ребят, такая тема: хочу замутить прокси-сервер на Python, который сможет обрабатывать соединения через HTTP-прокси. Короче, прям вопрос жизни и смерти! Что там нужно использовать? Рылся в сети, не особо ясно, что наилучший путь. Можете подкинуть примеров кода или объяснить пошагово? Заранее благодарю всех за помощь — спасёте меня просто!



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Привет! Вот тебе небольшой примерчик. Используй библиотеку `requests` и `proxies` для HTTP. Вот код:

    Программный код:
    import requests

    proxies 
    = {
    'http''http://your_proxy_ip:proxy_port',
    'https''http://your_proxy_ip:proxy_port',
    }

    response requests.get('http://example.com'proxies=proxies)
    print(
    response.content
    Вкратце, этот код просто берёт URL и прокидывает его через указанный прокси. Надеюсь, поможет!

  4. Цитата Сообщение от Ukord
    Привет! Вот тебе небольшой примерчик. Используй библиотеку `requests` и `proxies` для HTTP. Вот код:

    Программный код:
    import requests

    proxies 
    = {
    'http''http://your_proxy_ip:proxy_port',
    'https''http://your_proxy_ip:proxy_port',
    }

    response requests.get('http://example.com'proxies=proxies)
    print(
    response.content
    Вкратце, этот код просто берёт URL и прокидывает его через указанный прокси. Надеюсь, поможет!
    Накидываешь в коллбасу, типа норм схема. Но думаю, чуваку нужно чуть более сложное чето, чисто сервер мутить.

  5. Вариант для полного понимания:

    Программный код:
    import socket
    import threading

    def handle_client
    (client_socket):
    request client_socket.recv(1024)

    remote_socket socket.socket(socket.AF_INETsocket.SOCK_STREAM)
    remote_socket.connect(('remote.server.com'80))
    remote_socket.send(request)

    while 
    True:
    response remote_socket.recv(4096)
    if 
    len(response) == 0:
    break
    client_socket.send(response)

    client_socket.close()
    remote_socket.close()

    def start_proxy():
    server socket.socket(socket.AF_INETsocket.SOCK_STREAM)
    server.bind(('0.0.0.0'9999))
    server.listen(5)

    while 
    True:
    client_socketaddr server.accept()
    print(
    f"Accepted connection from {addr}")
    client_handler threading.Thread(target=handle_clientargs=(client_socket,))
    client_handler.start()

    if 
    __name__ == "__main__":
    start_proxy() 
    Это поподробнее, как свои ручонки за HTTP-прокси запустить на Python. Вот тут тебе всё будет.

  6. Цитата Сообщение от BlueWolf
    Вариант для полного понимания:

    Программный код:
    import socket
    import threading

    def handle_client
    (client_socket):
    request client_socket.recv(1024)

    remote_socket socket.socket(socket.AF_INETsocket.SOCK_STREAM)
    remote_socket.connect(('remote.server.com'80))
    remote_socket.send(request)

    while 
    True:
    response remote_socket.recv(4096)
    if 
    len(response) == 0:
    break
    client_socket.send(response)

    client_socket.close()
    remote_socket.close()

    def start_proxy():
    server socket.socket(socket.AF_INETsocket.SOCK_STREAM)
    server.bind(('0.0.0.0'9999))
    server.listen(5)

    while 
    True:
    client_socketaddr server.accept()
    print(
    f"Accepted connection from {addr}")
    client_handler threading.Thread(target=handle_clientargs=(client_socket,))
    client_handler.start()

    if 
    __name__ == "__main__":
    start_proxy() 
    Это поподробнее, как свои ручонки за HTTP-прокси запустить на Python. Вот тут тебе всё будет.
    Вау, этот вариант покруче! Просто с базиком да ещё на потоках. Учитывай только сервак в проде делать не рекомендуется без проф норм.

  7. Кому не хочется заморачиваться, может просто заюзать `mitmproxy`. Лёгкая настройка и погнал. Правда, код приводить не буду, тут доки на офф сайте проверь, пока хардкорное коси.

  8. Цитата Сообщение от NinaWind
    Кому не хочется заморачиваться, может просто заюзать `mitmproxy`. Лёгкая настройка и погнал. Правда, код приводить не буду, тут доки на офф сайте проверь, пока хардкорное коси.
    Во, правильно! mitmproxy тусовка чиловая, кроме шуток. Доки на сайте огонь, разберёшься за пару минут max.

  9. Ещё вариант - использовать `twisted`. Это фреймворк для асинхронных сетевых приложений. Вот скелет кода:

    Программный код:
    from twisted.internet import reactorprotocol
    from twisted
    .proxy import ProxyProxyFactory

    class MyProxy(Proxy):
    def dataReceived(selfdata):
    print(
    f'Received {data}')
    super().dataReceived(data)

    class 
    MyProxyFactory(ProxyFactory):
    protocol MyProxy

    reactor
    .listenTCP(8080MyProxyFactory())
    reactor.run() 
    Это будет работать! Асинхронщина тебе тут только в + пойдёт.

  10. Цитата Сообщение от MaxWizard
    Ещё вариант - использовать `twisted`. Это фреймворк для асинхронных сетевых приложений. Вот скелет кода:

    Программный код:
    from twisted.internet import reactorprotocol
    from twisted
    .proxy import ProxyProxyFactory

    class MyProxy(Proxy):
    def dataReceived(selfdata):
    print(
    f'Received {data}')
    super().dataReceived(data)

    class 
    MyProxyFactory(ProxyFactory):
    protocol MyProxy

    reactor
    .listenTCP(8080MyProxyFactory())
    reactor.run() 
    Это будет работать! Асинхронщина тебе тут только в + пойдёт.
    Twisted - это конечно круто, но новичку может быть сложновато. Хотя as a challenge - самое то. Вэлкам в мир async!

Страница 1 из 2 12 ПоследняяПоследняя