【问题标题】:How to get POST headers from Kwik site without downloading the video content?如何在不下载视频内容的情况下从 Kwik 网站获取 POST 标头?
【发布时间】:2019-07-20 07:51:26
【问题描述】:

我打算从 Kwik 网站上找到视频的链接。 Kwik 服务器仅在被适当站点引用时才显示视频,因此我找到了一个代码并将其修改为以下代码:

import requests
import re
down_url='http://kwik.cx/f/DsZh1AuNVGWF'

s=requests.Session()

parts_re = re.compile(r'action=\"([^"]+)\".*value=\"([^"]+)\".*Click Here to Download',re.DOTALL)
kwik_text=s.get(down_url,headers={'referer':down_url}).text

post_url,token=parts_re.search(kwik_text).group(1,2)

url=s.post(post_url,data={'_token':token},headers={'referer':down_url},allow_redirects='False').url
print(url)

我在运行此代码时,脚本使用约 150 mb 左右的视频大小,然后显示链接。

我再次在某人的代码中发现视频的 url 位于s.post(post_url,data={'_token':token},headers={'referer':down_url},allow_redirects='False').header['Location'],即使我尝试过,脚本仍然使用 ~150 mb 并显示一个关键错误

所以我的问题是如何打印实际视频的 url 而无需在后台下载视频?

【问题讨论】:

  • 也许您可以使用 readLines 读取源代码并对其进行解析,而无需实际请求页面?

标签: python web-scraping python-requests http-post


【解决方案1】:

在玩弄了代码之后,网站似乎发送了一个重定向请求

send: b'_token=ZnuawawUSe1pVvk7iPGi4dvqVEsLe0jWzrFbT3SC'
reply: 'HTTP/1.1 302 Found\r\n'

所以我的代码 allow_redirects = 'False' 中有一个错误,它实际上应该是一个类似于 allow_redirects = False 的布尔值,现在它可以工作了。 最终确定的代码是:

import requests
import re
down_url='http://kwik.cx/f/DsZh1AuNVGWF'

s=requests.Session()

parts_re = re.compile(r'action=\"([^"]+)\".*value=\"([^"]+)\".*Click Here to Download',re.DOTALL)
kwik_text=s.get(down_url,headers={'referer':down_url}).text

post_url,token=parts_re.search(kwik_text).group(1,2)

url=s.post(post_url,data={'_token':token},headers={'referer':down_url},allow_redirects=False).headers['location']
print(url)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 2018-09-28
    • 2021-05-22
    • 1970-01-01
    相关资源
    最近更新 更多