如何在Python中获取URL请求头?支持类似Charles Proxy格式吗?
问题1:如何在Python中获取指定URL的请求头
最常用的方式是借助requests库,它能轻松处理HTTP请求。你可以发送一个HEAD请求(只返回响应头,比GET更高效)来获取目标URL的响应头,示例代码如下:
import requests url = "https://example.com" try: response = requests.head(url, allow_redirects=True) # allow_redirects=True 处理重定向场景 # 获取响应头 response_headers = response.headers # 打印所有响应头 for key, value in response_headers.items(): print(f"{key}: {value}") except requests.exceptions.RequestException as e: print(f"请求出错: {e}")
如果需要获取自己发送的请求头(也就是请求时携带的头信息),可以访问response.request.headers:
print("发送的请求头:") for key, value in response.request.headers.items(): print(f"{key}: {value}")
问题2:能否在Python中以类似Charles Proxy的格式获取URL请求头
当然可以。Charles Proxy的格式通常会清晰区分请求信息、请求头、响应头,用分隔线分隔,键值对对齐显示。我们可以基于requests库获取头信息后,手动格式化输出,模仿Charles的样式:
import requests url = "https://example.com" try: response = requests.get(url, allow_redirects=True) # 模仿Charles格式输出 print("="*80) print(f"请求: {response.request.method} {url}") print("-"*80) print("请求头:") for key, value in response.request.headers.items(): print(f" {key}: {value}") print("-"*80) print(f"响应: {response.status_code} {response.reason}") print("-"*80) print("响应头:") for key, value in response.headers.items(): print(f" {key}: {value}") print("="*80) except requests.exceptions.RequestException as e: print(f"请求出错: {e}")
这段代码会输出类似Charles的结构化内容,包含请求方法、URL、请求头、响应状态、响应头,用横线和等号分隔,视觉上和Charles的请求详情面板风格一致。
内容的提问来源于stack exchange,提问作者vacuous_rom_36457
相关产品推荐
相关产品推荐

