我正在尝试使用 Selenium
从网站下载一些视频.
不幸的是我不能download
它来自源头,因为视频存储在访问受限的目录中,尝试使用 urllib
检索它们, requests
或 ffmpeg
返回 403 Forbidden
错误,即使在将我的用户数据注入(inject)网站之后也是如此。
我想完整播放视频并存储 media
文件来自 cache
.
会不会有这种可能?在哪里可以找到自定义配置文件中的缓存文件夹?如何区分缓存中的文件?
编辑:这就是我尝试使用 requests
做的事情
import requests
def main():
s = requests.Session()
login_page = '<<login_page>>'
login_data = dict()
login_data['username'] = '<<username>>'
login_data['password'] = '<<psw>>'
login_r = s.post(login_page)
video_src = '<<video_src>>'
cookies = dict(login_r.cookies) # contains the session cookie
# static cookies for every session
cookies['_fbp'] = 'fb.1.1630500067415.734723547'
cookies['_ga'] = 'GA1.2.823223936.1630500067'
cookies['_gat'] = '1'
cookies['_gid'] = 'GA1.2.1293544716.1631011551'
cookies['user'] = '66051'
video_r = s.get(video_src, cookies=cookies)
print(video_r.status_code)
if __name__ == '__main__':
main()
print() 函数返回:403
这是视频的网络标签:
最佳答案
关于video_r = s.get(video_src, cookies=cookies)
您是否尝试流式传输响应?它发送正确的字节范围 header 以下载视频。大多数网站都阻止将文件下载为“一个”块。
with open('...', 'wb') as f:
response = s.get(url=link, stream=True)
for chunk in response.iter_content(chunk_size=512):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
如果需要,您可以在之前发送 head 请求,这样您就可以创建一个进度条,您将从 header 中检索完整的内容长度。还有一个 403 是反僵尸系统常用的,可能是你的 Selenium 被检测到了。
关于python - 使用 Selenium 从缓存中提取媒体文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69056930/