kareemheshaam/capture2tls

GitHub: kareemheshaam/capture2tls

将代理工具捕获的原始 HTTP 请求转换为保留 TLS 指纹和 header 顺序的 Python 自动化代码,用于应对反机器人检测。

Stars: 0 | Forks: 0

# capture2tls 将 **Charles Proxy**(或任何代理工具)中捕获的原始 HTTP 请求转换为可直接运行的 **tls_client / curl_cffi** session 的 Python 代码。 与普通的 `requests` 不同,这些 session 会保留 header 顺序和 TLS 指纹——这在应对反机器人系统时非常重要。生成的代码会相应地使用 `session.header_order` 和 `session.force_http1`。如果你只需要普通的 `requests`,只需将 `session` 替换为 `requests.Session()` 并删除这两行即可。 ## 支持特性 - **HTTP/1.1** 格式(`GET /path HTTP/1.1` + `Host:` header) - **HTTP/2** 伪 header 格式(`:method`, `:authority`, `:path`, `:scheme`) - Cookie header → 拆分为单独的 `cookies` 字典 - JSON body → `json=` 参数 - 纯文本 / form body → `data=` 参数 - 自动移除 `Content-Length` 和 `Host` ## 用法 1. 从 Charles Proxy 中复制原始请求。 2. 将其粘贴到 `capture2tls.py` 的 `raw_request` 变量中。 3. 运行: ``` python capture2tls.py ``` 输出将打印到标准输出——你可以直接将其粘贴到你的自动化脚本中。 **输入示例 (HTTP/1.1):** ``` GET /api/v1/products?page=1&limit=20 HTTP/1.1 Host: example.com Accept: application/json User-Agent: Mozilla/5.0 (Android 11; Mobile) Authorization: Bearer YOUR_TOKEN_HERE Cookie: session_id=abc123; pref=dark ``` **生成输出:** ``` url = 'https://example.com/api/v1/products?page=1&limit=20' cookies = {'session_id': 'abc123', 'pref': 'dark'} headers = {'Accept': 'application/json', 'User-Agent': 'Mozilla/5.0 (Android 11; Mobile)', 'Authorization': 'Bearer YOUR_TOKEN_HERE'} session.header_order = list(headers.keys()) if 'Cookie' in headers: del headers['Cookie'] session.force_http1 = True response = session.get(url, headers=headers, cookies=cookies) ``` **输入示例 (HTTP/2):** ``` :method: POST :authority: api.example.com :scheme: https :path: /v2/auth/token content-type: application/json user-agent: okhttp/4.11.0 {"grant_type": "password", "username": "user", "password": "pass"} ``` ## 编程式调用 ``` from capture2tls import parse_and_generate raw = """ POST /api/login HTTP/1.1 Host: example.com Content-Type: application/json {"username": "user", "password": "pass"} """ print(parse_and_generate(raw)) ``` ## Session 设置(tls_client 示例) ``` import tls_client session = tls_client.Session( client_identifier="okhttp4_android_13", random_tls_extension_order=True ) # 在此粘贴生成的代码 url = 'https://example.com/api/v1/products' ... response = session.get(url, headers=headers, cookies=cookies) print(response.text) ``` ## 依赖 无——仅使用标准库。*生成的*代码需要 `tls_client` 或 `curl_cffi`(如果你不需要 TLS 指纹,则可以使用普通的 `requests`)。 ## 许可证 MIT
标签:Python, Radare2, SOC Prime, TLS指纹, 代码生成, 开发工具, 无后门, 渗透测试工具, 网络抓包, 网络调试, 自动化, 逆向工具