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根据给定文件返回文件名和扩展名的方法
Mar 27 Python
深入解析Python中的lambda表达式的用法
Aug 28 Python
Django中redis的使用方法(包括安装、配置、启动)
Feb 21 Python
PyQt5每天必学之事件与信号
Apr 20 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
Jun 26 Python
python中PS 图像调整算法原理之亮度调整
Jun 28 Python
python tkinter库实现气泡屏保和锁屏
Jul 29 Python
Django实现文件上传下载功能
Oct 06 Python
pygame实现贪吃蛇游戏(上)
Oct 29 Python
关于numpy.where()函数 返回值的解释
Dec 06 Python
如何用Matplotlib 画三维图的示例代码
Jul 28 Python
python全栈开发语法总结
Nov 22 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删除非空目录的函数代码小结
2013/02/28 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
JS中==与===操作符的比较
2009/03/21 Javascript
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
jquery中 $.expr使用实例介绍
2014/06/09 Javascript
jQuery焦点图轮播特效代码分享(3款)
2015/09/05 Javascript
bootstrap网页框架的使用方法
2016/05/10 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
2017/02/04 Javascript
Textarea输入字数限制实例(兼容iOS&amp;安卓)
2017/07/06 Javascript
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
如何抽象一个Vue公共组件
2017/10/17 Javascript
JS同步、异步、延迟加载的方法
2018/05/05 Javascript
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
2018/09/04 Javascript
小程序中this.setData的使用和注意事项
2019/08/28 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
2019/09/13 Javascript
Vue中ref和$refs的介绍以及使用方法示例
2021/01/11 Vue.js
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
[01:11:32]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
Python迭代器与生成器基本用法分析
2018/07/26 Python
python 常见字符串与函数的用法详解
2018/11/23 Python
django-rest-framework 自定义swagger过程详解
2019/07/18 Python
Python交互式图形编程的实现
2019/07/25 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
世界经理人咨询有限公司面试
2014/09/23 面试题
教堂婚礼主持词
2014/03/14 职场文书
合同协议书格式
2014/04/18 职场文书
高中生第一学年自我鉴定2015
2014/09/28 职场文书
幼儿学前班评语
2014/12/29 职场文书
网络管理员岗位职责
2015/02/12 职场文书
给朋友的赠语
2015/06/23 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
Python  序列化反序列化和异常处理的问题小结
2022/12/24 Python