如何使用docker容器作为代理?

如何使用docker容器作为代理?

我有以下docker-compose:

version: '3'
services:
  mitmproxy:
    image: johnmccabe/mitmweb
    container_name: mitmproxy
    command: --cadir /ca --wiface 0.0.0.0 
    restart: always
    ports:
        #- "8080:8080"
        - "8081:8081"

  python:
    image: python
    build: ./python-socks-example
    command: python3 /home/project/socks-example.py
    volumes:
      - ./python-socks-example:/home/project/
    depends_on:
       - mitmproxy
    container_name: python
    restart: always

我希望我的 Python HTTP 请求通过另一个容器上的 mitmproxy。以下是 Python 代码:

import requests
import time

while(True):
    time.sleep(5)
    print("gonna connect")
    resp = requests.get('http://google.com', 
                    proxies=dict(http='socks5://user:[email protected]:8080',
                                 https='socks5://user:[email protected]:8080'))
    print(resp)
    print("done")
    time.sleep(2)

我该如何连接网络python来穿过mitmproxy容器?

答案1

在您的 Python 代码中,您需要引用其他服务。

应更新代理 URL 以使其具有正确的主机名。也就是说,将server.com其替换为服务提供您想要连接的任何东西。

在这种情况下,您可以server.com用替换mitmproxy

这意味着你的python代码看起来应该是这样的:

import requests
import time

while(True):
    time.sleep(5)
    print("gonna connect")
    resp = requests.get('http://google.com', 
                    proxies=dict(http='socks5://user:pass@mitmproxy:8080',
                                 https='socks5://user:pass@mitmproxy:8080'))
    print(resp)
    print("done")
    time.sleep(2)

相关内容