You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

代理服务器转发请求时遇连接重置、400错误的问题求助

代理服务器转发请求时遇连接重置、400错误的问题求助

我想在VDS上搭建代理服务器,本地电脑设置代理后,通过远端服务器的脚本处理并转发请求。但在转发请求到google.com或youtube.com这类网站时遇到了麻烦:

  • 本地运行程序(监听127.0.0.1:65432)会触发error [WinError 10054]错误
  • 在VDS上运行则会出现[Errno 104] Connection reset by peer错误
    而且不管哪种情况,从目标网站都会收到400错误的响应。

相关配置截图

  • Proxy设置:
    proxy
  • VPS相关配置:
    vps
  • 本地相关配置:
    local

我的代码

我已经修改过很多次了(毕竟刚入门,犯了不少错,但这个问题实在搞不定):

import socket
import sys
import threading

    
HOST = "127.0.0.1"  # Standard loopback interface address (localhost)
PORT = 65432  # Port to listen on (non-privileged ports are > 1023)
BUFFER_SIZE = 10000


def main():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.bind((HOST, PORT))
    s.listen(10)
    print(f"Подняли сервер на порту: {PORT}")

    while True:
        try:
            conn, addr = s.accept()
            d = threading.Thread(target=conn_string, args=(conn, addr))
            d.setDaemon(True)
            d.start()
        except Exception as e:
            print(e)
            sys.exit(1)
    s.close()


def conn_string(conn, addr):
    try:
        data = conn.recv(BUFFER_SIZE)
        #print(f"Connection: {conn}")
        server = data.decode("utf-8")
        first_line = server.split('\n')[0]
        url = first_line.split(" ")[1]
        http_pos = url.find("://")
        if http_pos==-1:
            temp=url
        else:
            temp = url[(http_pos+3):]
        port_pos = temp.find(":")
        webserver_pos = temp.find("/")
        if webserver_pos == -1:
            webserver_pos = len(temp)

        webserver =""
        port = -1
        if (port_pos == -1 or webserver_pos < port_pos):
            port = 80
            webserver = temp[:webserver_pos]
        else:
            port = int((temp[(port_pos+1):])[:webserver_pos-port_pos-1])
            webserver = temp[:port_pos]
        decode_data = decode(data)
        #print(f"Address: {addr}")
        #print(f"Data: {data}")
        #print(f"Webserver: {webserver}")
        proxy_server(webserver, port, conn, addr, decode_data)
    except Exception as e:
        print(e)
        conn.close()
        sys.exit(2)


def decode(data):
    return bytes(data)


def get_vpn():
    return ("127.0.0.1", 12345)


def proxy_server(url, host_port, conn, addr, decode_data):
    print(url, host_port)
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client.settimeout(60.0)
    client.connect((url, int(host_port)))
    client.send(decode_data)
    while True:
        response = client.recv(BUFFER_SIZE)
        print(response.decode('utf-8'))
        if len(response.decode('utf-8')) > 0:
           conn.send(response)
           dar = float(len(response))
           dar = float(dar/1024)
           dar = f"{dar} KB"
           print(f"[*] Requests Done: {addr[0]} => {dar} <=")
        else:
            break
    print(f"Закрыл соединение с {url}")
    client.close()
    conn.close()


main()

备注:内容来源于stack exchange,提问作者ррово

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 13:15:29