gpt4 book ai didi

python - 400 使用 TLS 包装器重放捕获的 HTTP/2 请求数据包时来自某些网站的错误请求

转载 作者:行者123 更新时间:2023-12-04 22:38:41 27 4
gpt4 key购买 nike

我正在向 www.google.com 发送 HTTP/2 请求使用 Curl 实用程序并且服务器正在合法响应。在此之后,我使用 tcpdump 捕获请求数据包(数据包使用 PolarProxy 解密)。然后我的 python 脚本(tls 包装器)使用 scapy 读取这些请求数据包的有效负载,然后将其发送到 www.google.com使用 tls 包装器(参见下面的代码)。但是,尽管我正在重放使用 curl 发送的完全相同的请求,但 Google 正在返回 400 Bad request 错误。此方法适用于某些网站(twitter、天猫等),但不适用于 google、youtube 等网站。以下是在 curl_wwwgoogle.pcap 中捕获的 HTTP/2 请求数据包的屏幕截图文件。
HTTP/2 request packets
我的python脚本是:

import socket
import ssl
import requests
from scapy.all import *
from hpack import Encoder, Decoder

p=rdpcap('curl_wwwgoogle.pcap')

HOST, PORT = 'www.google.com', 443

payload=p[3][Raw].load+p[4][Raw].load+p[5][Raw].load+p[6][Raw].load

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(10)

wrappedSocket = ssl.wrap_socket(sock, ssl_version=ssl.PROTOCOL_TLS)

try:
wrappedSocket.connect((HOST, PORT))
wrappedSocket.send(payload)
response = wrappedSocket.recv(1280)
http_response = repr(response)
http_response_len = len(http_response)
except:
print("Connection error")
print(http_response)

wrappedSocket.close()

最佳答案

确保您使用 ALPN 宣布 HTTP/2,即类似这样的内容:

ctx = ssl.create_default_context()
ctx.set_alpn_protocols(["h2"])
wrappedSocket = ctx.wrap_socket(sock, server_hostname=HOST)

关于python - 400 使用 TLS 包装器重放捕获的 HTTP/2 请求数据包时来自某些网站的错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68296292/

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