Python实现的百度站长自动URL提交小工具


Posted in Python onJune 27, 2014

URL提交是百度提供的一个站长工具,用于给站长提供手工收录某些URL的接口,但是该接口有验证码识别部分,比较难弄。所以编写了如下程序进行验证码自动识别:

主要思路

获取多个验证码,提交到 http://lab.ocrking.com/ 进行多次识别,然后计算每个验证码图片识别出来的 字母或数字 进行统计,得出统计率最高的 即为验证码。

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import requests

import time

import json

import re

 

 

if __name__ == "__main__":

    i = 1

    s = requests.session()

    s.headers.update({'Referer':'http://zhanzhang.baidu.com/sitesubmit/index','User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36'})

    r = s.get('http://zhanzhang.baidu.com/sitesubmit/index')

    s2 = requests.session()

    r = s.post('http://zhanzhang.baidu.com/captcha',data={'async':'false','n':time.time()})

    url = json.loads(r.content)['url']

    temp = []

    while 1:

        try:

            r = s.get(url)

            img_data = r.content

            r = s2.get('http://lab.ocrking.com/')

            try:

                content = ' '.join(r.content.split())

                sid =  re.findall(r'"sid" : "(.+?)"',content)[0]

                hash_1 = re.findall(r'"hash" : "(.+?)"',content)[0]

                timestamp = re.findall(r'"timestamp" : "(.+?)"',content)[0]

            except:

                print 'error on get orking info!'

                continue

            files = {'Filedata':('icode.jpeg', img_data)}

            data  = {'Filename':'icode.jpeg','sid':sid,'hash':hash_1,'timestamp':timestamp}

            r = s2.post('http://lab.ocrking.com/upload.html',files = files,data= data)

            r = s2.post('http://lab.ocrking.com/ocrking.html',data={'upfile':r.content,'type':'captcha','charset':'7'})

            icode = re.findall(r'<OcrResult>(.+?)</OcrResult>',r.content)[0]

            if len(icode) != 4 :

                continue

            temp.append(icode)

            i = i + 1

            if i == 3 :

                break

        except Exception,e:

            print e 

            pass

 

    a = {'0':{},'1':{},'2':{},'3':{}}

    for aa in temp:

        i = 0 

        while i <=3 :

            try:

                a[str(i)][aa[i]] =  a[str(i)][aa[i]] + 1

            except:

                a[str(i)][aa[i]] = 1

            i = i + 1

    icode = ['','','','']

    for index in a:

        temp_times = 0

        for index_1 in a[index]:

            if a[index][index_1] >= temp_times :

                temp_times = a[index][index_1]

                icode[int(index)] = index_1

 

    icode =  ''.join(icode)

 

    img_name = 'temp\\'+icode+'.png'

    file_object = open(img_name, 'w')

    file_object.write(img_data)

    file_object.close() 

 

 

 

    #r = s.post('http://zhanzhang.baidu.com/sitesubmit/sitepost',data={'url':'http://lab.ocrking.com/','captcha':icode})

 

    #print r.content
Python 相关文章推荐
python抓取网页图片并放到指定文件夹
Apr 24 Python
Python简单日志处理类分享
Feb 14 Python
Python首次安装后运行报错(0xc000007b)的解决方法
Oct 18 Python
python实现按任意键继续执行程序
Dec 30 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
Apr 15 Python
详解python中的 is 操作符
Dec 26 Python
Python字符串对象实现原理详解
Jul 01 Python
Python使用百度api做人脸对比的方法
Aug 28 Python
python实现的汉诺塔算法示例
Oct 23 Python
Python中pyecharts安装及安装失败的解决方法
Feb 18 Python
python数据类型可变不可变知识点总结
Mar 06 Python
Python通过Schema实现数据验证方式
Nov 12 Python
python使用心得之获得github代码库列表
Jun 25 #Python
在Python中使用异步Socket编程性能测试
Jun 25 #Python
Python开发的单词频率统计工具wordsworth使用方法
Jun 25 #Python
python 字典(dict)遍历的四种方法性能测试报告
Jun 25 #Python
用python登录Dr.com思路以及代码分享
Jun 25 #Python
python正则表达式re模块详解
Jun 25 #Python
Python通过websocket与js客户端通信示例分析
Jun 25 #Python
You might like
用PHP制作的意见反馈表源码
2007/03/11 PHP
一个判断email合法性的函数[非正则]
2008/12/09 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
2014/12/12 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
元素绑定click点击事件方法
2015/06/08 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
2015/12/07 Javascript
js定义类的几种方法(推荐)
2016/06/08 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
浅析JS中常用类型转换及运算符表达式
2017/07/23 Javascript
Node.js动手撸一个静态资源服务器的方法
2019/03/09 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
vue-cli3访问public文件夹静态资源报错的解决方式
2020/09/02 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
Python实现全角半角转换的方法
2014/08/18 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
基于python神经卷积网络的人脸识别
2018/05/24 Python
python中退出多层循环的方法
2018/11/27 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
python实现logistic分类算法代码
2020/02/28 Python
Python 生成短8位唯一id实战教程
2021/01/13 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
秘书专业自荐信范文
2013/12/26 职场文书
销售辞职报告范文
2014/01/12 职场文书
大学生的自我鉴定范文
2014/01/21 职场文书
班主任新年寄语
2014/04/04 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
转正申请报告格式
2015/05/15 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
Redis读写分离搭建的完整步骤
2021/09/14 Redis