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 相关文章推荐
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
简洁的十分钟Python入门教程
Apr 03 Python
python中迭代器(iterator)用法实例分析
Apr 29 Python
Python的requests网络编程包使用教程
Jul 11 Python
python+matplotlib实现礼盒柱状图实例代码
Jan 16 Python
python机器学习理论与实战(六)支持向量机
Jan 19 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
Mar 20 Python
python实现五子棋人机对战游戏
Mar 25 Python
Python基于Tensor FLow的图像处理操作详解
Jan 15 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
Apr 02 Python
在PyCharm中安装PaddlePaddle的方法
Feb 05 Python
Python与C/C++的相互调用案例
Mar 04 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
Terran建筑一览
2020/03/14 星际争霸
用文本作数据处理
2006/10/09 PHP
PHP写MySQL数据 实现代码
2009/06/15 PHP
一些被忽视的PHP函数(简单整理)
2010/04/30 PHP
PHP Echo字符串的连接格式
2016/03/07 PHP
js substr、substring和slice使用说明小记
2011/09/15 Javascript
Firefox下无法正常显示年份的解决方法
2014/09/04 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
解决JS请求服务器gbk文件乱码的问题
2015/10/16 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
微信小程序 教程之wxapp视图容器 swiper
2016/10/19 Javascript
JSON 数据格式详解
2017/09/13 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
python编写网页爬虫脚本并实现APScheduler调度
2014/07/28 Python
Python中用post、get方式提交数据的方法示例
2017/09/22 Python
python实现简单神经网络算法
2018/03/10 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
2020/06/01 Python
python爬虫利用代理池更换IP的方法步骤
2021/02/21 Python
CSS3的RGBA中关于整数和百分比值的转换
2015/08/04 HTML / CSS
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
Bally巴利中国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/10/09 全球购物
什么是索引指示器
2012/08/20 面试题
综合测评自我鉴定
2013/10/08 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
教你如何使用Python实现二叉树结构及三种遍历
2021/06/18 Python
Go语言基础函数基本用法及示例详解
2021/11/17 Golang