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 相关文章推荐
详解Django框架中用context来解析模板的方法
Jul 20 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
May 25 Python
使用Python实现企业微信的自动打卡功能
Apr 30 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
Aug 08 Python
python装饰器练习题及答案
Nov 01 Python
python:动态路由的Flask程序代码
Nov 22 Python
Django中使用MySQL5.5的教程
Dec 18 Python
python操作gitlab API过程解析
Dec 27 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
Mar 25 Python
Django 解决新建表删除后无法重新创建等问题
May 21 Python
实操Python爬取觅知网素材图片示例
Nov 27 Python
Python实现批量将文件复制到新的目录中再修改名称
Apr 12 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 preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
2012/10/03 PHP
php获取字段名示例分享
2014/03/03 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
用jquery和json从后台获得数据集的代码
2011/11/07 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
EasyUI实现二级页面的内容勾选的方法
2015/03/01 Javascript
js闭包所用的场合以及优缺点分析
2015/06/22 Javascript
javascript动态添加checkbox复选框的方法
2015/12/23 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
vue项目实战总结篇
2018/02/11 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
2018/03/06 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
详解ES6 系列之异步处理实战
2018/10/26 Javascript
vue组件化中slot的基本使用方法
2019/05/01 Javascript
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
python求最大公约数和最小公倍数的简单方法
2020/02/13 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
速比涛英国官网:Speedo英国
2019/07/15 全球购物
英国最大的独立玩具专卖店:The Entertainer
2019/09/06 全球购物
.net开发工程师面试题
2014/02/25 面试题
大学计划书范文800字
2014/08/14 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
保管员岗位职责
2015/02/14 职场文书
Vue接口封装的完整步骤记录
2021/05/14 Vue.js
详解JVM系列之内存模型
2021/06/10 Javascript