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输出一个杨辉三角的例子
Jun 13 Python
Python中time模块与datetime模块在使用中的不同之处
Nov 24 Python
利用python批量检查网站的可用性
Sep 09 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
Jul 09 Python
Python实现插入排序和选择排序的方法
May 12 Python
创建Django项目图文实例详解
Jun 06 Python
Python函数默认参数常见问题及解决方案
Mar 26 Python
Python转换字典成为对象,可以用&quot;.&quot;方式访问对象属性实例
May 11 Python
如何解决flask修改静态资源后缓存文件不能及时更改问题
Aug 02 Python
python 调用Google翻译接口的方法
Dec 09 Python
Python网络编程之ZeroMQ知识总结
Apr 25 Python
Python基础之元编程知识总结
May 23 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 八种基本的数据类型小结
2011/06/01 PHP
PHP表单数据写入MySQL数据库的代码
2016/05/31 PHP
用JQUERY增删元素的代码
2012/02/14 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
EasyUI实现二级页面的内容勾选的方法
2015/03/01 Javascript
JS获取一个未知DIV高度的方法
2016/08/09 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
解决Vue使用mint-ui loadmore实现上拉加载与下拉刷新出现一个页面使用多个上拉加载后冲突问题
2017/11/07 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
Python 命令行参数sys.argv
2008/09/06 Python
Python中的jquery PyQuery库使用小结
2014/05/13 Python
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
Python Matplotlib库入门指南
2015/05/18 Python
pip安装Python库时遇到的问题及解决方法
2017/11/23 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
Python中py文件引用另一个py文件变量的方法
2018/04/29 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
Python list与NumPy array 区分详解
2019/11/06 Python
opencv之为图像添加边界的方法示例
2019/12/26 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
Python库安装速度过慢解决方案
2020/07/14 Python
基于注解实现 SpringBoot 接口防刷的方法
2021/03/02 Python
培训班主持词
2014/03/28 职场文书
医学求职自荐信
2014/06/21 职场文书
村支部书记群众路线对照检查材料思想汇报
2014/10/08 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
同学联谊会邀请函
2019/06/24 职场文书
Python音乐爬虫完美绕过反爬
2021/08/30 Python