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

如何用Python实现响应HTTP GET请求并返回指定查询参数值

没问题!用Python实现这个Webhook需求很简单,我给你几个实用的方案,都不需要依赖PHP环境:

方案1:使用Flask(轻量Web框架)

Flask是Python生态里非常流行的轻量Web框架,用来实现这个需求非常快捷:

首先安装Flask:

pip install flask

然后创建一个Python脚本(比如webhook.py):

from flask import Flask, request

app = Flask(__name__)

@app.route('/', methods=['GET'])
def handle_challenge():
    # 从GET查询参数中提取challenge的值
    challenge = request.args.get('challenge')
    # 返回纯文本响应,同时设置正确的Content-Type头
    return challenge, 200, {'Content-Type': 'text/plain'}

if __name__ == '__main__':
    # 启动服务,监听所有网卡的80端口(可根据需求修改端口)
    app.run(host='0.0.0.0', port=80)

启动脚本后,当收到类似GET https://your-server?challenge=8ec8d794-e0ab-42df-9017-e3dada8e84f7的请求时,就会返回对应的challenge值,和你提供的PHP脚本效果完全一致。

方案2:使用FastAPI(现代异步Web框架)

如果你偏好异步框架,FastAPI是个不错的选择,性能更好且自带文档支持:

首先安装依赖:

pip install fastapi uvicorn

创建脚本(比如webhook.py):

from fastapi import FastAPI, Request
from fastapi.responses import PlainTextResponse

app = FastAPI()

@app.get('/', response_class=PlainTextResponse)
async def handle_challenge(request: Request):
    # 获取查询参数中的challenge值
    challenge = request.query_params.get('challenge')
    # 直接返回值,PlainTextResponse会自动设置Content-Type为text/plain
    return challenge

启动服务:

uvicorn webhook:app --host 0.0.0.0 --port 80
方案3:使用Python原生http.server(无需额外依赖)

如果不想安装任何第三方库,可以用Python自带的http.server模块来实现:

创建脚本(比如webhook.py):

from http.server import BaseHTTPRequestHandler, HTTPServer
from urllib.parse import urlparse, parse_qs

class ChallengeRequestHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        # 解析URL中的查询参数
        parsed_url = urlparse(self.path)
        query_params = parse_qs(parsed_url.query)
        # 获取challenge参数,默认空字符串防止参数不存在的情况
        challenge = query_params.get('challenge', [''])[0]
        
        # 设置响应状态码和头部
        self.send_response(200)
        self.send_header('Content-Type', 'text/plain')
        self.end_headers()
        
        # 将challenge值编码后写入响应体
        self.wfile.write(challenge.encode('utf-8'))

if __name__ == '__main__':
    # 绑定端口80启动服务
    server_address = ('', 80)
    httpd = HTTPServer(server_address, ChallengeRequestHandler)
    print('Webhook server running on port 80...')
    httpd.serve_forever()

直接运行这个脚本即可,不需要额外安装任何包,同样能实现你需要的功能。

内容的提问来源于stack exchange,提问作者Nicholas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:50:35