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 相关文章推荐
Django框架下在URLconf中指定视图缓存的方法
Jul 23 Python
windows系统下Python环境搭建教程
Mar 28 Python
python用列表生成式写嵌套循环的方法
Nov 08 Python
浅谈python实现Google翻译PDF,解决换行的问题
Nov 28 Python
Pandas 缺失数据处理的实现
Nov 04 Python
Python面向对象之多态原理与用法案例分析
Dec 30 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
Jan 18 Python
Python中os模块功能与用法详解
Feb 26 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
Sep 17 Python
python实现逻辑回归的示例
Oct 09 Python
python 基于UDP协议套接字通信的实现
Jan 22 Python
OpenCV全景图像拼接的实现示例
Jun 05 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 在文件指定行插入数据的代码
2010/05/08 PHP
PHP实现邮件群发的源码
2013/06/18 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
2013/06/24 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
php动态添加url查询参数的方法
2015/04/14 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
PHP使用函数用法详解
2018/09/30 PHP
js form action动态修改方法
2008/11/04 Javascript
在js中单选框和复选框获取值的方式
2009/11/06 Javascript
jquery下jstree简单应用 - v1.0
2011/04/14 Javascript
jQuery下通过replace字符串替换实现大小图片切换
2012/05/22 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
2014/01/07 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
jquery插件validation实现验证身份证号等
2015/06/04 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
让图片跳跃起来  javascript图片轮播特效
2016/02/16 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
2017/09/11 Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
2019/02/28 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
python递归打印某个目录的内容(实例讲解)
2017/08/30 Python
TensorFlow实现AutoEncoder自编码器
2018/03/09 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
Python中修改字符串的四种方法
2018/11/02 Python
用Python从0开始实现一个中文拼音输入法的思路详解
2019/07/20 Python
在django admin中添加自定义视图的例子
2019/07/26 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
python调用百度API实现人脸识别
2020/11/17 Python
历史学专业个人的自我评价
2013/10/13 职场文书
小学生读书感言
2014/02/12 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书
详解JS WebSocket断开原因和心跳机制
2021/05/07 Javascript