没有项目描述
pyhttpintercept的Python项目详细描述
PyHttpIntercept
提供一个http服务器,可用于拦截和修改本地客户端的api请求/响应。
这对于从api生成不同响应类型并不总是理想的客户端测试非常有用。
http服务器提供以下功能:
- 网站托管
- 使用以下方法重定向请求:
- http 3xx状态
- 对客户透明
- 拦截和修改请求。中间人,用于客户根据生产API进行测试。
- 请求代理
当请求传入时,将按以下顺序检查和执行方法:
- 重定向
- 主持
- Intercept-只有在主机未接收到请求时,才能到达Intercept。
- 代理-只有在宿主或拦截未接收到请求时,才能达到代理配置。 < > >
- object key:string-站点所在的路径。
doc_root
:string-配置站点的完整路径。也可以配置相对路径,如下所述。活动
:布尔值-如果要为站点提供服务,则为true。说明
:字符串-[可选]站点的说明。- 对象键:字符串-要重定向的域。
主机
:字符串-[可选]要重定向到的完整域。路径
:对象-[可选]包含为此域重定向的路径的对象。激活
:布尔值-为真可启用重定向。说明
:字符串-[可选]重定向说明。- 对象键:字符串-重定向路径。
主机
:字符串-[可选]要重定向到的完整域。路径
:字符串-[可选]要重定向到的完整路径。如果省略,则路径将设置为域根目录。状态
:number-[可选]要发送的HTTP 3xx状态。指定此参数将告诉服务器使用http 3xx重定向,而不是透明重定向。激活
:布尔值-为真可启用重定向。说明
:字符串-[可选]重定向说明。- 对象键:字符串-要拦截的域。
激活
:布尔值-为真以启用代理。说明
:string-[可选]代理的说明。- 对象键:字符串-域到代理。
激活
:布尔值-为真以启用代理。说明
:string-[可选]代理的说明。
托管请求
站点可以像任何Web服务器一样托管。服务器仅支持静态站点/资源。
主机配置
配置文件示例:
{"/":{"doc_root":"default_sites/","active":true,"description":"Root Site"},"/example":{"doc_root":"default_sites/example/","active":true,"description":"Example Site"}}
已配置的站点配置密钥将设置为预期的URL路径。
站点配置参数:
相对路径
重定向请求
发送HTTP 3xx状态
这些是您的标准重定向。
对客户透明
对于不支持重定向的客户端,这些功能非常有用。
一个例子是将具有硬编码端点的客户机重定向到实验室环境进行测试,而不必为实验室生成和安装特定的构建。
重定向配置
参数:
注意:必须至少指定主机
或路径
中的一个!
路径对象:
注意:必须至少指定路径
或主机
(来自站点/路径配置)中的一个!
如果在密钥中指定了主机,则只有在截取或代理时才会对其进行验证,否则将忽略密钥。
在同一站点内重定向路径:
{"example.com":{"paths":{"/example_redirect":{"path":"/temp_path","active":true,}},"active":true,}}
使用http 3xx重定向在同一站点内重定向路径:
{"example.com":{"paths":{"/example_redirect":{"path":"/temp_path","status":301,"active":true,}},"active":true,}}
将路径从一个站点重定向到另一个站点:
{"example.com":{"host":"example2.com","paths":{"/example_redirect":{"path":"/","active":true,}},"active":true,}}
这也可以在逐个路径的基础上完成:
{"example.com":{"paths":{"host":"example2.com","/example_redirect":{"path":"/","active":true,},"/example_redirect2":{"host":"example3.com","path":"/","active":true,}},"active":true,}}
如果为路径配置了主机,则它优先于站点重定向主机。
将一个域重定向到另一个域:
{"example.com":{"host":"example2.com","active":true,}}
这适用于d的所有路径奥曼.
拦截请求
拦截配置
参数:
配置文件示例:
{"example.com":{"active":true,"description":"Intercept & modify"}}
代理请求
参数:
代理可以配置为代理所有请求:
{"*":{"active":true,"description":"Proxy All"}}
或仅限特定域:
{"example.com":{"active":true,"description":"Proxy example.com"}}
通配符
"*"字符可用作通配符。
域通配符
*.example.com
将处理所有子域的请求,但不处理example.com
。
*example.com
将处理所有子域的请求,包括example.com
在下面的示例中,第一个配置example.com将只代理example.com
的请求。
而第二个配置\*.example.com
将代理所有子域,但不代理example.com
{"/":{"doc_root":"default_sites/","active":true,"description":"Root Site"},"/example":{"doc_root":"default_sites/example/","active":true,"description":"Example Site"}}0
此片段可以简化为:
{"/":{"doc_root":"default_sites/","active":true,"description":"Root Site"},"/example":{"doc_root":"default_sites/example/","active":true,"description":"Example Site"}}1
路径通配符(仅适用于重定向)
在下面的示例中,example.com/example_redirect/testing/*
将重定向对路径/testing
的所有请求,包括子路径,即/testing/path
和所有子路径都将重定向到example.com/temp_path
{"/":{"doc_root":"default_sites/","active":true,"description":"Root Site"},"/example":{"doc_root":"default_sites/example/","active":true,"description":"Example Site"}}2