gpt4 book ai didi

linux - 如何重新排序 HTTP header ?

转载 作者:太空狗 更新时间:2023-10-29 11:21:38 26 4
gpt4 key购买 nike

我想知道在被发送回网络服务器之前,是否有任何方法可以重新排序由我们的浏览器发送的 HTTP header

由于 header 的顺序会留下某种“指纹”,请参阅 this postthis post ,我正在考虑使用 MITMProxy(我猜是使用内联脚本)来即时修改 header 。这可能吗?

如何实现这一目标?
注意:我正在寻找一种可以编写脚本的方法,而不是使用像 Burp Suite 这样的图形工具的方法(尽管众所周知 Burp 能够重新排序标题)

我乐于接受建议。也许 NGINX 也可以来拯救?

编辑:我应该更具体,举个例子......

假设我使用的是 Firefox。通过使用时髦的附加组件,我欺骗我的用户代理“看起来”像 Chrome 浏览器。但是如果我用 ip-check.info 测试我的浏览器,我的浏览器的“签名”仍然是 Firefox,即使我的欺骗用户代理显示“Chrome”。

因此,在这种特定情况下,解决方案应该是以与 Chrome 相同的方式重新排序 HTTP header 。

如何做到这一点?

最佳答案

郑重声明,根据 RFC 7230,HTTP header 的顺序应该根本不重要.但是既然你问了......这可以在 mitmproxy 中完成,如下所示:

import random

def request(context, flow):
# flow.request.headers.fields is a tuple of (name, value) header tuples.
h = list(flow.request.headers.fields)
random.shuffle(h)
flow.request.headers.fields = tuple(h)

请参阅 netlib.http.Headers 上的 mitmproxy 文档了解更多详情。

有很多方法可以根据需要重新排序:

def reorder(headers, header_order=["Host","User-Agent","Accept"]):
lines = []
for name in header_order: # add existing headers in the specified order
if name in headers:
lines.extend(headers.get_all(name))
del headers[name]
lines.extend(headers.fields) # all other headers
return lines
request.headers.fields = reorder(request.headers)

关于linux - 如何重新排序 HTTP header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37341273/

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