gpt4 book ai didi

python - 从 url 提供服务的脚本,用于匹配正则表达式的请求

转载 作者:太空宇宙 更新时间:2023-11-03 18:52:12 26 4
gpt4 key购买 nike

我是 Python 新手,正在尝试找出 mitmproxy 的 stub 。我已经尝试过文档,但他们假设我们了解 Python,所以我陷入了僵局。

我一直在使用脚本:

original_url = 'http://production.domain.com/1/2/3'
new_content_path = '/home/andrepadez/proj/main.js'
body = open(new_content_path, 'r').read()

def response(context, flow):
url = flow.request.get_url()
if url == original_url:
flow.response.content = body

正如您所预测的,代理会将每个请求发送到“http://production.domain.com/1/2/3” ' 并提供我的文件的内容。

我需要它更加动态:对于每个请求 ' http://production.domain.com/ *',我需要提供相应的 URL,例如: http://production.domain.com/1/4/3 -> http://develop.domain.com/1/4/3

我知道我必须使用正则表达式,这样我才能正确捕获和映射它,但我不知道如何将开发 url 的内容作为“flow.response.content”提供服务。

欢迎任何帮助

最佳答案

你必须做这样的事情:

import re

# In order not to re-read the original file every time, we maintain
# a cache of already-read bodies.
bodies = { }

def response(context, flow):
# Intercept all URLs
url = flow.request.get_url()
# Check if this URL is one of "ours" (check out Python regexps)
m = re.search('REGEXP_FOR_ORIGINAL_URL/(\d+)/(\d+)/(\d+)', url)
if None != m:
# It is, and m will contain this information
# The three numbers are in m.group(1), (2), (3)
key = "%d.%d.%d" % ( m.group(1), m.group(2), m.group(3) )
try:
body = bodies[key]
except KeyError:
# We do not yet have this body
body = // whatever is necessary to retrieve this body
= open("%s.txt" % ( key ), 'r').read()
bodies[key] = body
flow.response.content = body

关于python - 从 url 提供服务的脚本,用于匹配正则表达式的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18081593/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com