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中列表(list)操作方法汇总
Aug 18 Python
Python中的数据对象持久化存储模块pickle的使用示例
Mar 03 Python
TensorFlow安装及jupyter notebook配置方法
Sep 08 Python
python逆向入门教程
Jan 15 Python
Python3监控疫情的完整代码
Feb 20 Python
使用wxpy实现自动发送微信消息功能
Feb 28 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
Jun 04 Python
keras 多任务多loss实例
Jun 22 Python
pytorch实现查看当前学习率
Jun 24 Python
python 基于opencv 实现一个鼠标绘图小程序
Dec 11 Python
如何用用Python将地址标记在地图上
Feb 07 Python
python实现监听键盘
Apr 26 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 Ctemplate引擎开发相关内容
2012/03/03 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
2013/06/28 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
laravel7学习之无限级分类的最新实现方法
2020/09/30 PHP
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
JQuery的一些小应用收集
2010/03/27 Javascript
用JS判断IE版本的代码 超管用!
2011/08/09 Javascript
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
标题过长使用javascript按字节截取字符串
2014/04/24 Javascript
JS实现文字掉落效果的方法
2015/05/06 Javascript
jquery实现的用户注册表单提示操作效果代码分享
2015/08/28 Javascript
js实现下拉菜单效果
2017/03/01 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
利用React Router4实现的服务端直出渲染(SSR)
2019/01/07 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
深入理解 Python 中的多线程 新手必看
2016/11/20 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
2018/01/02 Python
python使用Plotly绘图工具绘制柱状图
2019/04/01 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
对tensorflow 中tile函数的使用详解
2020/02/07 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
jupyter notebook实现显示行号
2020/04/13 Python
详解pytorch tensor和ndarray转换相关总结
2020/09/03 Python
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
波兰家居和花园家具专家:4Home
2019/05/26 全球购物
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
如何转换一个字符串到enum值
2014/04/12 面试题
个人实用简单的自我评价
2013/10/19 职场文书
承办会议欢迎词
2014/01/17 职场文书
税务会计岗位职责
2014/02/18 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python