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之复习if语句
Oct 02 Python
python自动翻译实现方法
May 28 Python
浅谈对yield的初步理解
May 29 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
Jun 15 Python
Anaconda入门使用总结
Apr 05 Python
python使用response.read()接收json数据的实例
Dec 19 Python
python 使用shutil复制图片的例子
Dec 13 Python
python模拟点击网页按钮实现方法
Feb 25 Python
Python之Matplotlib文字与注释的使用方法
Jun 18 Python
Python安装第三方库攻略(pip和Anaconda)
Oct 15 Python
python 实现socket服务端并发的四种方式
Dec 14 Python
python3.7.2 tkinter entry框限定输入数字的操作
May 22 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处理restful请求的路由类分享
2014/02/27 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
PHP实现批量修改文件名的方法示例
2019/09/18 PHP
php post换行的方法
2020/02/03 PHP
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
HTML上传控件取消选择
2013/03/06 Javascript
jQuery图片的展开和收缩实现代码
2013/04/16 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
2015/11/30 Javascript
JavaScript核心语法总结(推荐)
2016/06/02 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
2017/03/23 jQuery
bootstrap table表格插件使用详解
2017/05/08 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
详解如何在微信小程序中愉快地使用sass
2018/07/30 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
JS正则表达式常见函数与用法小结
2020/04/13 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
Python设计模式之代理模式实例
2014/04/26 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
后端开发使用pycharm的技巧(推荐)
2020/03/27 Python
销售心得体会
2014/01/02 职场文书
幼儿园教师工作制度
2014/01/22 职场文书
学习自我鉴定
2014/02/01 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
大学生求职自荐信
2015/03/24 职场文书
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
2021/06/08 Python
SpringBoot整合阿里云视频点播的过程详解
2021/12/06 Java/Android
《原神》新角色演示“神里绫人:林隐泓洄” 宠妹狂魔
2022/04/03 其他游戏