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天气预报采集器实现代码(网页爬虫)
Oct 07 Python
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
Jul 09 Python
django 自定义用户user模型的三种方法
Nov 18 Python
Django模板变量如何传递给外部js调用的方法小结
Jul 24 Python
基于Python和Scikit-Learn的机器学习探索
Oct 16 Python
Python读取系统文件夹内所有文件并统计数量的方法
Oct 23 Python
对python3新增的byte类型详解
Dec 04 Python
python正则表达式去除两个特殊字符间的内容方法
Dec 24 Python
python3实现点餐系统
Jan 24 Python
一篇文章弄懂Python中所有数组数据类型
Jun 23 Python
利用rest framework搭建Django API过程解析
Aug 31 Python
Python操作Jira库常用方法解析
Apr 10 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
刷新时清空文本框内容的js代码
2007/04/23 Javascript
JMenuTab简单使用说明
2008/03/13 Javascript
Javascript实现CheckBox的全选与取消全选的代码
2010/07/20 Javascript
打造基于jQuery的高性能TreeView(asp.net)
2011/02/23 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
使用JavaScript的AngularJS库编写hello world的方法
2015/06/23 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
JS中常用的输出方式(五种)
2016/06/12 Javascript
Vue-Router模式和钩子的用法
2018/02/28 Javascript
在vue项目中使用sass的配置方法
2018/03/20 Javascript
JS 实现获取验证码 倒计时功能
2018/10/29 Javascript
微信小程序的开发范式BeautyWe.js入门详解
2019/07/10 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
javascript实现画板功能
2020/04/12 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
Javascript call及apply应用场景及实例
2020/08/26 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
初步认识Python中的列表与位运算符
2015/10/12 Python
python 用 xlwings 库 生成图表的操作方法
2019/12/22 Python
Windows系统下pycharm中的pip换源
2020/02/23 Python
python二维图制作的实例代码
2020/12/03 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
2020/04/27 HTML / CSS
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
大四毕业生学习总结的自我评价
2013/10/31 职场文书
医学院学生的自我评价分享
2013/11/19 职场文书
会计应聘求职信范文
2013/12/17 职场文书
委托证明的格式
2014/01/10 职场文书
应届大专毕业生自我鉴定
2014/04/08 职场文书
《水上飞机》教学反思
2014/04/10 职场文书
《画风》教学反思
2014/04/16 职场文书
教师个人年终总结
2015/02/11 职场文书
白银帝国观后感
2015/06/17 职场文书
如何给HttpServletRequest增加消息头
2021/06/30 Java/Android