gpt4 book ai didi

python - 为什么我无法通过 HTTP 1.1 从 youtube 获取响应 header ?

转载 作者:行者123 更新时间:2023-11-28 19:22:51 25 4
gpt4 key购买 nike

在 python 3.3 中,我想从 youtube 网页获取响应 header 。使用 HTTP 1.0,下面的代码工作正常:

import socket
PATH='/watch?v=GVIjOr98B7Q'
HOST='www.youtube.com'
buffer = bytes('HEAD %s HTTP/1.0\r\nHost: %s\r\n\r\n' %(PATH, HOST),'ascii')
PORT=80
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.sendall(buffer)
td=b''
while 1:
data = s.recv(1024)
td+=data
if not data:
break

但是,如果我用 HTTP 1.1 替换 HTTP 1.0:

buffer = bytes('HEAD %s HTTP/1.1\r\nHost: %s\r\n\r\n' %(PATH, HOST),'ascii')

和任何其他行保持不变。它会在 while 循环中停止很长时间(它不是循环而是等待结束信号)。为什么会这样?

最佳答案

HTTP 1.1 保持连接打开,除非您传递 header Connection: close。请参阅:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

如果您希望连接立即关闭,请使用 HTTP 1.0 或发送 header Connection: close

关于python - 为什么我无法通过 HTTP 1.1 从 youtube 获取响应 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20581622/

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