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 04 Python
Python编程中使用Pillow来处理图像的基础教程
Nov 20 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
Jun 24 Python
Django中的forms组件实例详解
Nov 08 Python
python 3.3 下载固定链接文件并保存的方法
Dec 18 Python
python自动发邮件总结及实例说明【推荐】
May 31 Python
对numpy下的轴交换transpose和swapaxes的示例解读
Jun 26 Python
python数据分析工具之 matplotlib详解
Apr 09 Python
Python startswith()和endswith() 方法原理解析
Apr 28 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
May 26 Python
Python urllib3软件包的使用说明
Nov 18 Python
python 实现的截屏工具
May 08 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下载远程文件类(支持断点续传)
2008/11/14 PHP
php过滤敏感词的示例
2014/03/31 PHP
ThinkPHP表单自动验证实例
2014/10/13 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
PDO::quote讲解
2019/01/29 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
Javascript this 的一些学习总结
2012/08/31 Javascript
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
div拖拽插件——JQ.MoveBox.js(自制JQ插件)
2013/05/17 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
2013/07/22 Javascript
node.js中的fs.readFileSync方法使用说明
2014/12/15 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
JS中的进制转换以及作用
2016/06/26 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
jquery实现图片放大点击切换
2017/06/06 jQuery
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
jquery根据name取得select选中的值实例(超简单)
2018/01/25 jQuery
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
用Python解数独的方法示例
2019/10/24 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
django序列化serializers过程解析
2019/12/14 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
2020/05/18 Python
锐步香港官方网上商店:Reebok香港
2020/11/05 全球购物
活动总结格式
2014/08/30 职场文书
2014年财务人员工作总结
2014/11/11 职场文书
七年级作文之英语老师
2019/10/28 职场文书
vue修饰符.capture和.self的区别
2022/04/22 Vue.js
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技