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跳出循环语句continue与break的区别
Aug 25 Python
python连接mysql实例分享
Oct 09 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 Python
python实现按长宽比缩放图片
Jun 07 Python
Flask框架Jinjia模板常用语法总结
Jul 19 Python
Python wxPython库消息对话框MessageDialog用法示例
Sep 03 Python
Python简易版图书管理系统
Aug 12 Python
Python imutils 填充图片周边为黑色的实现
Jan 19 Python
Python反爬虫伪装浏览器进行爬虫
Feb 28 Python
python requests包的request()函数中的参数-params和data的区别介绍
May 05 Python
使用openCV去除文字中乱入的线条实例
Jun 02 Python
python实现简单的tcp 文件下载
Sep 16 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的urlencode()URL编码函数浅析
2011/08/09 PHP
php的XML文件解释类应用实例
2014/09/22 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
2017/08/15 PHP
php用wangeditor3实现图片上传功能
2019/08/22 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
Z-Blog中用到的js代码
2007/03/15 Javascript
javascript中的一些注意事项 更新中
2010/12/06 Javascript
利用jq让你的div居中的好方法分享
2013/11/21 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
JavaScript实现打开链接页面的方式汇总
2016/06/02 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
基于jquery二维码生成插件qrcode
2017/01/07 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
2017/01/21 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
python根据京东商品url获取产品价格
2015/08/09 Python
解决python3在anaconda下安装caffe失败的问题
2017/06/15 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
python数值基础知识浅析
2019/11/19 Python
python实现连连看游戏
2020/02/14 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
周鸿祎:教你写创业计划书
2013/12/30 职场文书
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
个人近期表现材料
2014/02/11 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
二审代理词范文
2015/05/25 职场文书
消防安全培训工作总结
2015/10/23 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫