[初学Python]利用某网站的功能写一个磁力链转种子工具

news/2024/11/22 19:31:26/

孔子曰:学而时习之~

初学python,一边看语法,一边看参考例程,写了一个小程序,做个存档,否则很容易忘记。

这次的目标是利用某种子下载网站,编写一个磁力链下载种子文件的工具。

常见的种子文件磁力链接的格式是这样的:magnet:?xt=urn:btih:XXX

其中的XXX就是种子文件的哈希值,而这个网站可以输入哈希值,下载对应的种子文件,

但是该网站广告内容太多了,用浏览器打开不太方便呀~,具体是哪个网站我就不说了,哈哈~~~,自己看代码吧。

# 磁力链接转种子文件
# QQ:446252221 <446252221@qq.com>
import io
import os
import time
import urllib.request
import urllib.parse
import html.parserUSER_AGENT = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"#HTML解析
class html_dumper(html.parser.HTMLParser):def __init__(self):html.parser.HTMLParser.__init__(self)self.key = ""def handle_starttag(self, tag, attrs):if tag == "input":if attrs[1][1] == "key":self.key = attrs[2][1]return Nonedef handle_data(self, data):return Nonedef handle_comment(self, data):return Nonedef get_key(self):return self.key#第1步获取key
def step1_get_key(hash):req_url = "http://www.storetorrents.com/hash/" + hashreq = urllib.request.Request(url=req_url, method="GET")req.add_header("User-Agent", USER_AGENT)try:respon = urllib.request.urlopen(req)#print("第1步:", respon.status)respon_cook = respon.getheader("Set-Cookie")respon_body = respon.read()dumper = html_dumper()dumper.feed(respon_body.decode("utf-8"))#print("key:", dumper.get_key())return dumper.get_key()except BaseException as e:print("urlopen error:", e)return None#第2步获取captcha
def step2_get_captcha():req_url = "https://storetorrents.xyz/captcha"req = urllib.request.Request(url=req_url, method="GET")req.add_header("User-Agent", USER_AGENT)#req.add_header("Cookie", "__cfduid=dac7712102a83c5d8e2d3fb4ec6f407031553505032; PHPSESSID=25d2d5kd6erdqbo1fv4o4e8vs2")try:respon = urllib.request.urlopen(req)#print("第2步:", respon.status)respon_body = respon.read()respon_cook = respon.getheader("Set-Cookie")file_name = "captcha.jpg"file_obj = open(file_name, "wb")file_obj.write(respon_body)file_obj.close()os.system(file_name)#print("cookie:", respon_cook)cookie_list = respon_cook.split(";", -1)cookie = cookie_list[0] + ";" + cookie_list[5].split(",", 1)[1]#print("cookie:", cookie)return cookieexcept BaseException as e:print("urlopen error:", e)return None#第3步下载文件
def step3_download(key, hash, captcha, cookie):req_url = "https://storetorrents.xyz/download"req_values = {}req_values["key"] = keyreq_values["infohash"] = hashreq_values["captcha"] = captchareq_body = urllib.parse.urlencode(req_values)#print("key encode:", req_body)req = urllib.request.Request(url=req_url, method="POST", data=bytes(req_body, encoding="utf8"))req.add_header("User-Agent", USER_AGENT)req.add_header("Cookie", cookie)try:respon = urllib.request.urlopen(req)#print("第3步:", respon.status)type = respon.getheader("Content-Type")#print("Type:", type)if type.startswith("text/html"):print(respon.read().decode("utf-8"))return Nonerespon_body = respon.read()file_name = hash + ".torrent"file_obj = open(file_name, "wb")file_obj.write(respon_body)file_obj.close()print("下载完成!")except BaseException as e:print("urlopen error:", e)return None#入口
os.system("title 磁力转换工具")
os.system("echo off")
while(True):hash = input("magnet:?xt=urn:btih:")key = step1_get_key(hash)if key == None:print("未找到该资源!")os.system("pause")continuecookie = step2_get_captcha()if cookie == None:print("获取验证码失败!")os.system("pause")continuecode = input("请输入验证码:")step3_download(key, hash, code, cookie)os.system("pause")

 

简单解释一下代码内容:

整体流程是:

1.访问A页面,解析HTML得到其中的重要参数key.

2.访问B页面,得到cookie和验证码.

3.输入验证码:由于python显示图片要用第三方库实现,所以暂时没有用代码实现。取而代之的是下载图片,然后用Windows系统图片查看器打开它,然后人工识别验证码。

4.访问C页面,下载种子文件,这个页面使用POST方式请求,并附加B页面得到的cookie和3个参数:由A页面得到的key,由B页面得到的验证码,和种子文件的哈希值。

5.下载C页面返回的数据写入到文件,这就是我们要的种子文件啦。

 


http://www.ppmy.cn/news/789079.html

相关文章

磁力块(分块)

题目链接 输入格式 第一行五个整数 x 0 , y 0 , p L , r L , N x_0,y_0,p_L,r_L,N x0​,y0​,pL​,rL​,N&#xff0c;表示小取酒所在的位置&#xff0c;磁石 L L L 磁力、吸引半径和原野上散落磁石的个数。 接下来 N N N 行每行五个整数 x , y , m , p , r x,y,m,p,r x,…

海洋磁力数据处理步骤

​ &#xff08;此照片乃航次获奖照片&#xff09; 前面几个章节介绍了地磁基本知识&#xff0c;由于项目紧急&#xff0c;只能边学习理论&#xff0c; 边处理。经过2个月的努力&#xff0c;基本上掌握了海洋重磁处理的基本方法。 目前&#xff0c;专项的重磁处理都是各单位自己…

磁力链接做成rar文件后怎么打开

要打开 RAR 文件&#xff0c;首先需要安装一个 RAR 解压缩软件。 Windows 系统自带的资源管理器不能直接解压 RAR 文件&#xff0c;所以需要使用第三方软件。 常用的 RAR 解压缩软件有&#xff1a; WinRAR(收费)7-Zip(免费) 安装完解压缩软件之后&#xff0c;打开 RAR 文件可以…

磁力块

题目链接 在一片广袤无垠的原野上&#xff0c;散落着 N N N块磁石。 每个磁石的性质可以用一个五元组 ( x , y , m , p , r ) (x,y,m,p,r) (x,y,m,p,r)描述&#xff0c;其中 x , y x,y x,y表示其坐标&#xff0c; m m m是磁石的质量&#xff0c; p p p是磁力&#xff0c; r r …

基于matlab使用激光雷达检测地平面和障碍物(附源码)

一、前言 此示例演示如何通过分割地平面并查找附近的障碍物来处理来自安装在车辆上的传感器的 3-D 激光雷达数据。这可以促进车辆导航的可驾驶路径规划。该示例还演示如何可视化流式激光雷达数据。 二、创建 Velodyne 文件读取器 本例中使用的激光雷达数据是使用安装在车辆上…

find和grep各个参数

find 功能&#xff1a;在目录结构中搜索文件&#xff0c;并执行指定的操作。此命令提供了相当多的查找条件&#xff0c;功能很强大。 语法: find 查找位置 匹配文件名 说明&#xff1a;find命令从指定的起始目录开始&#xff0c;递归地搜索其各个子目录&#xff0c;查找满足…

开源免费录屏软件整理

百度了好多软件&#xff0c;大多限制时间或者质量不好或者有水印&#xff0c;以下三款无水印、无广告、清晰度高&#xff0c;记录以下。 1.ScreenToGif gif短动画录制 它的Github开源项目地址在这里&#xff0c;下载地址在这里。 2.Captura 这个录制视频有声音&#xff0c…

电脑录屏用什么软件?推荐这3款软件,用过都说好

如今网络中&#xff0c;有很多的软件都能够实现电脑录屏。但想要找一个方便好用的电脑录屏软件却十分困难。电脑录屏用什么软件&#xff1f;今天小编将为小伙伴分享3款超级方便好用的电脑录屏软件&#xff0c;用过的小伙伴都说好&#xff01;一起来看看吧。 电脑录屏软件1&…