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中的ctime()方法使用教程
May 22 Python
Python3读取UTF-8文件及统计文件行数的方法
May 22 Python
Python常用小技巧总结
Jun 01 Python
实例解析Python设计模式编程之桥接模式的运用
Mar 02 Python
详谈pandas中agg函数和apply函数的区别
Apr 20 Python
PyTorch里面的torch.nn.Parameter()详解
Jan 03 Python
Python logging模块写入中文出现乱码
May 21 Python
使用python实现时间序列白噪声检验方式
Jun 03 Python
python打包生成so文件的实现
Oct 30 Python
pymysql模块使用简介与示例
Nov 17 Python
利用Python过滤相似文本的简单方法示例
Feb 03 Python
python基础之错误和异常处理
Oct 24 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 sybase_fetch_array使用方法
2014/04/15 PHP
分享php邮件管理器源码
2016/01/06 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
jquery each()源代码
2011/02/14 Javascript
js鼠标滑过弹出层的定位IE6bug解决办法
2012/12/26 Javascript
JS修改css样式style浅谈
2013/05/06 Javascript
javascript中不提供sleep功能如何实现这个功能
2014/05/27 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
angularjs学习笔记之完整的项目结构
2015/09/26 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理
2015/11/24 Javascript
bootstrap flask登录页面编写实例
2016/11/01 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
2016/12/14 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
详解从买域名到使用pm2部署node.js项目全过程
2018/03/07 Javascript
jQuery插件jsonview展示json数据
2018/05/26 jQuery
Vue Echarts实现可视化世界地图代码实例
2019/05/07 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
2015/05/15 Python
zookeeper python接口实例详解
2018/01/18 Python
python基于http下载视频或音频
2018/06/20 Python
浅谈Django的缓存机制
2018/08/23 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
python实现无边框进度条的实例代码
2020/12/30 Python
学生周末回家住宿长期请假条
2014/02/15 职场文书
领导失职检讨书
2014/02/24 职场文书
环境工程专业自荐信范文
2014/03/18 职场文书
三字经教学反思
2014/04/26 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
优秀团员事迹材料
2014/12/25 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书
Python中的min及返回最小值索引的操作
2021/05/10 Python
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js
SQL语句中EXISTS的详细用法大全
2022/06/25 MySQL
使用python生成大量数据写入es数据库并查询操作(2)
2022/09/23 Python