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中利用原始套接字进行网络编程的示例
May 04 Python
Python中使用装饰器时需要注意的一些问题
May 11 Python
详解Python的Django框架中的templates设置
May 11 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
Oct 11 Python
python中redis的安装和使用
Dec 04 Python
Python3实现购物车功能
Apr 18 Python
pandas删除行删除列增加行增加列的实现
Jul 06 Python
详解如何减少python内存的消耗
Aug 09 Python
python的scipy实现插值的示例代码
Nov 12 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
Dec 11 Python
python实时监控logstash日志代码
Apr 27 Python
关于Python中进度条的六个实用技巧分享
Apr 05 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中date()日期函数有关参数整理
2011/07/19 PHP
PHP利用header跳转失效的解决方法
2014/10/24 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
Jquery replace 字符替换实现代码
2010/12/02 Javascript
JavaScript中链式调用之研习
2011/04/07 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
基于jquery实现复选框全选,反选,全不选等功能
2015/10/16 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
ajax实现动态下拉框示例
2017/01/10 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
2017/06/02 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
微信小程序日历组件使用方法详解
2018/12/29 Javascript
TypeScript中的方法重载详解
2019/04/12 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python使用Flask框架获取当前查询参数的方法
2015/03/21 Python
python处理html转义字符的方法详解
2016/07/01 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
pycharm 安装JPype的教程
2019/08/08 Python
tornado+celery的简单使用详解
2019/12/21 Python
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
2019/04/26 HTML / CSS
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
2013/07/19 HTML / CSS
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
学校万圣节活动方案
2014/02/13 职场文书
三分钟演讲稿事例
2014/03/03 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
党支部创先争优承诺书
2014/08/30 职场文书
建国大业电影观后感
2015/06/01 职场文书