使用 get 请求下载 torrent 文件 (.torrent)

Downloading torrent file using get request (.torrent)

我正在尝试通过以下代码下载 torrent 文件:

url = "https://itorrents.org/torrent/0BB4C10F777A15409A351E58F6BF37E8FFF53CDB.torrent"
r = requests.get(url, allow_redirects=True)
open('test123.torrent', 'wb').write(r.content)

它下载了一个 torrent 文件,但是当我将它加载到 bittorrent 时发生错误。

它说无法加载,Torrent 编码无效

谁能帮我解决这个问题?提前致谢

本页面使用cloudflare来防止抓取页面,很抱歉,如果只使用requests绕过cloudflare是非常困难的,措施cloudflare takes 将更新 soon.This 页面将检查您的浏览器是否支持 Javascript。如果不支持,他们将不会向您提供 file.That 的字节,这就是您无法使用它们的原因.(你可以用r.text查看响应内容,是一个htmlpage.Not一个文件。)

在这种情况下,我觉得你应该考虑使用selenium

我们可以通过在 headers 中添加 cookie 来实现。 但一段时间后 cookie 过期。 因此唯一的解决办法是从打开的浏览器下载

绕过 Cloudflare 可能会很痛苦,所以我建议使用一个库来处理它。请不要忘记,您的代码将来可能会中断,因为 Cloudflare 会定期更改其技术。好吧,如果你使用这个库,你只需要更新这个库(至少你应该希望如此)。

我只在 NodeJS 中使用了类似的库,但我看到 python 也有类似的东西 - cloudscraper

示例:

import cloudscraper

scraper = cloudscraper.create_scraper()  # returns a CloudScraper instance
# Or: scraper = cloudscraper.CloudScraper()  # CloudScraper inherits from requests.Session
print scraper.get("http://somesite.com").text  # => "<!DOCTYPE html><html><head>..."

根据您的使用情况,您可能需要考虑使用代理 - 如果您发送过多请求,CloudFlare 仍会阻止您。


此外,如果您正在使用 视频种子 ,您可能会对 Torrent Stream Server 感兴趣。它是一个同时下载和流式传输视频的服务器,因此您可以观看视频而无需完全下载它