如何用Python Requests仅获取HTTP头部Set-Cookie并终止连接
如果只需要提取响应头里的Set-Cookie字段,完全没必要下载大体积的响应体,用下面两种方法就能高效实现,还能节省带宽:
方法一:用HEAD请求(优先推荐)
HEAD请求只会返回HTTP响应头部,不会下载任何响应体,是最省带宽的方式:
import requests # 替换成你要请求的目标URL target_url = 'https://example.com' try: # 发送HEAD请求,仅获取响应头部 response = requests.head(target_url) response.raise_for_status() # 检查请求是否成功 # 提取Set-Cookie字段 set_cookie = response.headers.get('Set-Cookie') if set_cookie: print(f"拿到的Set-Cookie: {set_cookie}") else: print("响应头里没有Set-Cookie") except requests.exceptions.RequestException as e: print(f"请求出错: {e}")
方法二:用GET请求+流式模式+手动关闭连接
如果某些服务器对HEAD请求不友好(比如不返回Set-Cookie),可以用这种方式:开启流式模式后,requests不会自动下载响应体,拿到头部后直接关闭连接就行:
import requests target_url = 'https://example.com' try: # 开启stream=True,避免自动下载响应体 response = requests.get(target_url, stream=True) response.raise_for_status() # 提取Set-Cookie字段 set_cookie = response.headers.get('Set-Cookie') if set_cookie: print(f"拿到的Set-Cookie: {set_cookie}") else: print("响应头里没有Set-Cookie") # 立即关闭连接,终止响应体下载 response.close() except requests.exceptions.RequestException as e: print(f"请求出错: {e}")
注意事项
- 优先用HEAD请求,比第二种方法更高效;
- 记得加异常处理,避免请求失败时程序崩溃;
- 替换代码里的
target_url为你实际要请求的地址。
内容的提问来源于stack exchange,提问作者Muhammad Ikhwan Perwira
相关产品推荐
相关产品推荐

