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

如何伪造客户端至服务器请求?使仅接受localhost的服务器认可请求

能不能伪造localhost请求?看服务器的判断逻辑

首先得明确:服务器限制"仅接受localhost请求",一般分两种验证方式,对应不同的解决办法:


情况1:服务器靠HTTP请求头判断来源

如果服务器是通过X-Forwarded-For、X-Real-IP这类自定义头来识别请求是否来自localhost,那用curl直接加对应请求头就能绕过:

  • 优先试X-Forwarded-For:
    curl -H "X-Forwarded-For: 127.0.0.1" http://你的目标服务器地址
    
  • 要是不行换X-Real-IP(部分服务器用这个字段):
    curl -H "X-Real-IP: 127.0.0.1" http://你的目标服务器地址
    

如果这俩都没用,得去查服务器的配置或者日志,看它具体依赖哪个请求头做验证。


情况2:服务器检查真实TCP源IP

如果服务器是直接校验网络层的真实源IP(也就是你发起请求的设备IP是不是127.0.0.1/::1),那远程直接伪造是不可能的——源IP是网络路由决定的,你没法让远程服务器把你的公网IP当成localhost。这种情况只有一个靠谱的解决办法:
在目标服务器上运行一个本地代理/转发工具,然后你通过这个代理发送请求。此时请求是从服务器本地发起的,源IP自然是127.0.0.1,服务器会直接接受。

举个简单的Python转发脚本(在服务器上运行):

import socket
import threading

def relay_request(client_conn):
    # 接收客户端的请求数据
    req_data = client_conn.recv(4096)
    # 连接到本地的目标服务(假设目标服务在8080端口)
    local_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    local_server.connect(("127.0.0.1", 8080))
    # 转发请求并取回响应
    local_server.send(req_data)
    res_data = local_server.recv(4096)
    # 把响应发回给客户端
    client_conn.send(res_data)
    # 关闭连接
    client_conn.close()
    local_server.close()

def start_proxy():
    # 绑定到服务器的公网IP和9999端口,允许远程连接
    proxy_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    proxy_socket.bind(("0.0.0.0", 9999))
    proxy_socket.listen(5)
    print(f"本地代理已启动,监听 0.0.0.0:9999")
    while True:
        client, addr = proxy_socket.accept()
        # 用线程处理每个请求
        thread = threading.Thread(target=relay_request, args=(client,))
        thread.start()

if __name__ == "__main__":
    start_proxy()

运行脚本后,你本地用curl通过这个代理请求:

curl -x http://服务器公网IP:9999 http://127.0.0.1:8080

关于你之前的疑问

  • 换WiFi后公网IP失效:说明服务器的白名单里只添加了你原来WiFi的公网IP,换网后你的公网IP改变,自然被拒绝。
  • curl加头没成功:大概率是服务器根本不依赖HTTP头做验证,只认真实的源IP,所以加头没用。

内容的提问来源于stack exchange,提问作者Juan David Arce

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:43:18