Python制作CSDN免积分下载器
admin
2023-07-31 02:17:20
0

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(\’电信下载地址:\’) + 15
    b = returnHtml.find(\'

网通下载地址:\’)
    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()

演示图片

 

以上就是本文的全部内容了,希望大家能够喜欢。

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python查找阿姆斯特朗数 题目解释 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...