Python制作CSDN免积分下载器


Posted in Python onMarch 10, 2015

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制作CSDN免积分下载器 

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

Python 相关文章推荐
python如何实现反向迭代
Mar 20 Python
python线程池threadpool使用篇
Apr 27 Python
解决python "No module named pip" 的问题
Oct 13 Python
Python转换时间的图文方法
Jul 01 Python
解决Atom安装Hydrogen无法运行python3的问题
Aug 28 Python
Python使用matplotlib绘制三维参数曲线操作示例
Sep 10 Python
python实现按首字母分类查找功能
Oct 31 Python
Spring Cloud Feign高级应用实例详解
Dec 10 Python
python中安装django模块的方法
Mar 12 Python
简单了解python列表和元组的区别
May 14 Python
pycharm进入时每次都是insert模式的解决方式
Feb 05 Python
如何在python中实现ECDSA你知道吗
Nov 23 Python
Python Tkinter GUI编程入门介绍
Mar 10 #Python
Python格式化css文件的方法
Mar 10 #Python
Python将xml和xsl转换为html的方法
Mar 10 #Python
Python写的Tkinter程序屏幕居中方法
Mar 10 #Python
Python生成随机密码
Mar 10 #Python
Python获取单个程序CPU使用情况趋势图
Mar 10 #Python
Python使用xlrd读取Excel格式文件的方法
Mar 10 #Python
You might like
PHP return语句另类用法不止是在函数中
2014/09/17 PHP
PHP封装函数实现生成随机的字符串验证码
2017/01/24 PHP
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
JQuery跨Iframe选择实现代码
2010/08/19 Javascript
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
jquery的键盘事件修改代码
2011/02/24 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
2013/11/19 Javascript
js图片延迟技术一般的思路与示例
2014/03/20 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
jQuery实现磁力图片跟随效果完整示例
2016/09/16 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
Vue渲染函数详解
2017/09/15 Javascript
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
在 Angular6 中使用 HTTP 请求服务端数据的步骤详解
2018/08/06 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
ZK中使用JS读取客户端txt文件内容问题
2019/11/07 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
2020/08/06 Javascript
python学习 流程控制语句详解
2016/06/01 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
Python异常处理操作实例详解
2018/05/10 Python
python重试装饰器的简单实现方法
2019/01/31 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
简单了解Python生成器是什么
2019/07/02 Python
django自带调试服务器的使用详解
2019/08/29 Python
Python字典中的值为列表或字典的构造实例
2019/12/16 Python
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
临床医学专业毕业生的自我评价
2013/10/17 职场文书
英文版销售经理个人求职信
2013/11/20 职场文书
2014年征兵标语
2014/06/20 职场文书
春节超市活动方案
2014/08/14 职场文书
秦兵马俑导游词
2015/02/02 职场文书
设备技术员岗位职责
2015/04/11 职场文书
2015年个人工作总结报告
2015/04/25 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript