使用 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 感兴趣。它是一个同时下载和流式传输视频的服务器,因此您可以观看视频而无需完全下载它。
我正在尝试通过以下代码下载 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 感兴趣。它是一个同时下载和流式传输视频的服务器,因此您可以观看视频而无需完全下载它。