Python制作CSDN免积分下载器
作者:hebedich 发布时间:2021-12-25 03:46:35
标签:Python,CSDN,免积分,下载器
CSDN免积分下载 你懂的。
1、输入资源地址如:http://download.csdn.net/download/gengqkun/4127808
2、输入验证码
3、点击下载,会弹出浏览器下载。
注:成功率在70-80% ,界面很丑,请将就着用。
#-*-coding:utf-8-*-
#python3.3.5
import urllib.parse,urllib.request,http.cookiejar,io,webbrowser
import tkinter as tk
from tkinter import *
from tkinter.ttk import *
from urllib.request import urlopen
from PIL import Image, ImageTk
global root
#设置cookie
cookie = http.cookiejar.CookieJar()
cookieProc = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(cookieProc)
urllib.request.install_opener(opener)
#根据路径和POST内容来提交表单
def getUrlRequest(iUrl,iStrPostData):
postdata = urllib.parse.urlencode(iStrPostData)
postdata = postdata.encode(encoding='UTF8')
header = {'User-Agent':'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)'}
req= urllib.request.Request(
url = iUrl,
data = postdata,
headers = header)
data = urllib.request.urlopen(req).read()
try:
data = data.decode('utf-8')
except:
data = data.decode('gbk', 'ignore')
return data
#获取验证码图片
def getCodeImg():
urlCode='http://csdn.juming.com/code.htm'
image_bytes = urlopen(urlCode).read()
# internal data file
data_stream = io.BytesIO(image_bytes)
# open as a PIL image object
pil_image = Image.open(data_stream)
tk_image = ImageTk.PhotoImage(pil_image)
return tk_image
#构建界面
def createGui(msg=''):
global root
root = tk.Tk()
root.title("CSDN免积分下载器 v0.1")
root.resizable(False, False) #禁止修改窗口大小
root.geometry('+400+250') #屏幕位置
#-------------------------------------------
tk_image = getCodeImg()
# put the image on a typical widget
frm_top_label = tk.Label(root,compound = 'top',image=tk_image,text="验证码图片",fg="blue",bg="brown",font=('Tempus Sans ITC',20))
frm_top_label.grid(row = 0, column = 0, padx = 15, pady = 2)
#-------------------------------------------
frm_bottom = tk.LabelFrame(root)
frm_bottom.grid(row = 1, column = 0, padx = 15, pady = 2)
frm_bottom_label_0 = tk.Label(frm_bottom,text="下载地址:", font=('Tempus Sans ITC',15))
frm_bottom_label_0.grid(row = 0, column = 0, padx = 5, pady = 2,sticky = "e") #控件右对齐
frm_bottom_label_1 = tk.Label(frm_bottom,text=" 验证码:", font=('Tempus Sans ITC',15))
frm_bottom_label_1.grid(row = 1, column = 0, padx = 5, pady = 2,sticky = "e")
frm_bottom_entry_var_0 = StringVar()
frm_bottom_entry_0 = tk.Entry(frm_bottom,textvariable=frm_bottom_entry_var_0)
frm_bottom_entry_0.grid(row = 0, column = 1, padx = 15, pady = 2)
frm_bottom_entry_var_1 = StringVar()
frm_bottom_entry_1 = tk.Entry(frm_bottom,textvariable=frm_bottom_entry_var_1) #设置密码输入框,熟悉show
frm_bottom_entry_1.grid(row = 1, column = 1, padx = 15, pady = 2)
frm_bottom_btn_0 = tk.Button(frm_bottom,text="下 载",relief=RIDGE,bd=4,width=10, font=('Tempus Sans ITC',12),command=lambda:downloadSource(frm_bottom_entry_var_0,frm_bottom_entry_var_1,frm_top_label,frm_foot_label))
frm_bottom_btn_0.grid(row = 3, column = 1, padx = 15, pady = 2,sticky = "w")
frm_foot_label = tk.Label(root,text=msg ,font=('Tempus Sans ITC',10))
frm_foot_label.grid(row = 3, column = 0, padx = 15, pady = 2)
root.mainloop()
#获取下载资源地址
def getSourceUrl(code,ziyuandz):
#资源信息
strLoginInfo = {'csdn_zh': '用户名',
'csdn_mm': '密码',
're_yzm':code,
'ziyuandz':ziyuandz #'http://download.csdn.net/detail/shinian1987/8430743' #
}
#下载资源地址
urlLogin='http://csdn.juming.com/index.htm'
returnHtml = str(getUrlRequest(urlLogin,strLoginInfo))
a = returnHtml.find('电信下载地址:<strong>') + 15
b = returnHtml.find('</strong><br>网通下载地址:')
durl = returnHtml[a:b]
return durl
#下载资源
def downloadSource(frm_bottom_entry_var_0,frm_bottom_entry_var_1,frm_top_label,frm_foot_label):
try:
ziyuandz = frm_bottom_entry_var_0.get()
code = frm_bottom_entry_var_1.get()
durl = getSourceUrl(code,ziyuandz)
print('资源地址:'+ durl)
reMsg = "已经打开浏览器,请下载..."
yzm = durl.find("验证码")
#yzm += durl.find("验证码验证错误")
#yzm += durl.find("验证码输入不正确")
fs = durl.find("封杀本工具特意加")
gs = durl.find("正确的格式如")
jf = durl.find("成功获取到0点积分")
xzzy = durl.find("http:")
if fs > 0:
reMsg = "该资源被封杀,请稍后再下载..."
elif code=='':
reMsg = "验证码不能为空..."
elif ziyuandz=='':
reMsg = "下载地址不能为空..."
elif gs > 0:
reMsg = "资源地址错误,请重新输入..."
elif yzm > 0:
reMsg = "验证码输入错误..."
elif jf > 0:
reMsg = "积分不足,资源无法下载..."
elif xzzy >= 0:
webbrowser.open(durl, new=0, autoraise=True)
else:
reMsg = "资源错误或没有找到下载资源..."
#print(xzzy)
frm_foot_label['text'] = reMsg
tk_image = getCodeImg()
frm_top_label.configure(image = tk_image)
frm_top_label.image= tk_image
except:
root.destroy()
createGui('程序错误,请重新下载...')
#MAIN
createGui()
演示图片


猜你喜欢
- 本文实例讲述了Python实现拷贝多个文件到同一目录的方法。分享给大家供大家参考,具体如下:有一个文件,里面存有多个文件名,一个文件名一行。
- 前言本文提供获取视频时长的python代码,精确到毫秒,一如既往的实用主义。环境依赖 ffmpeg环境安装,可以参考:window
- 浅谈NumPy中的维度AxisNumPy中的维度是一个很重要的概念,很多函数的参数都需要给定维度Axis,如何直观的理解维度呢?我们首先以二
- 【作者翻译】结构和层次降低了复杂性并提高了可读性。你的文章或站点组织的越深入,用户就越容易理解你观点和得到你想传达的信息。在网页上,这点被通
- 推荐系统MostPopular算法的Python实现MostPopular 算法的 是指对每个用户都选择出当前流行度最高的Top-K个物品进
- 大家知道,在js里encodeURIComponent 方法是一个比较常用的编码方法,但因工作需要,在asp里需用到此方法,查了好多资料,没
- 1.学习目标递归函数是直接调用自己或通过一系列语句间接调用自己的函数。递归在程序设计有着举足轻重的作用,在很多情况下,借助递归可以优雅的解决
- 前言Python 提供了很多截取字符串的方法,被称为“切片(slicing)”。模版如下:strin
- 前沿在CV领域,我们需要熟练掌握最基本的知识就是各种卷积神经网络CNN的模型架构,不管我们在图像分类或者分割,目标检测,NLP等,我们都会用
- Declaring class members or methods as st
- var arr=['a','b','c'];若要删除其中的'b',有两种方法
- 前言虽然现在文件上传下载工具多如牛毛,比如http、ftp、sftp、scp等方案都可以用于文件传输,但都是需要安装服务器甚至客户端。有一种
- 注意:if语句代码是从上往下执行的,当执行到满足条件的语句时,代码会停止往下执行注意:if语句后面要加上冒号score = int (inp
- 目录赋值语句直接赋值:增量赋值: 链式赋值: 多重赋值:语法糖:基本输入:input()函数:eval()函数:&nbs
- 迭代器(Iterable):能直接作用于for循环的对象,统称可迭代对象。例如:list、tuple、set、str、generator都是
- 如下所示:import sysfrom PyQt5 import QtCore,QtGuifrom PyQt5.QtWidgets impo
- 1.Fork出来的Git仓库同步代码背景:有的时候从原仓库fork出了一个新仓库,这个新仓库做了自己的修改。可是原仓库也进行了更新,比如修复
- 先看看那种容易被注入的SQL id = 11001 sql = """
- 这本入门手册是否合适你?我只想告诉你我非常喜欢这本书。我对Microsoft Access的经验足以让我跳过这本傻瓜系列教材,但是实际情况是
- JS添加/删除事件在IE和支持dom浏览器分别为:attachEvent(ie中的添加事件),detachEvent(ie中的删除事件),a