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简单猜数游戏实例
Jul 09 Python
Python如何import文件夹下的文件(实现方法)
Jan 24 Python
Python中装饰器兼容加括号和不加括号的写法详解
Jul 05 Python
Python安装与基本数据类型教程详解
May 29 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
Aug 17 Python
python sqlite的Row对象操作示例
Sep 11 Python
python conda操作方法
Sep 11 Python
python 微信好友特征数据分析及可视化
Jan 07 Python
python使用pymongo与MongoDB基本交互操作示例
Apr 09 Python
Python读取JSON数据操作实例解析
May 18 Python
python中执行smtplib失败的处理方法
Jul 01 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 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
VML绘图板②脚本--VMLgraph.js、XMLtool.js
2006/10/09 PHP
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
smarty模板引擎基础知识入门
2015/03/30 PHP
大家未必知道的Js技巧收藏
2008/04/07 Javascript
jquery获取焦点和失去焦点事件代码
2013/04/21 Javascript
Js注册协议倒计时的小例子
2013/06/24 Javascript
火狐下table中创建form导致两个table之间出现空白
2013/09/02 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
js实现身份证号码验证的简单实例
2014/02/19 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
2014/08/16 Javascript
javascript+canvas制作九宫格小程序
2014/12/28 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
2015/03/26 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
2016/04/18 Javascript
详解用vue.js和laravel实现微信授权登陆
2017/06/23 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
原生JS实现拖拽效果
2020/12/04 Javascript
从源码角度来回答keep-alive组件的缓存原理
2021/01/18 Javascript
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
python实现烟花小程序
2019/01/30 Python
Python with用法:自动关闭文件进程
2019/07/10 Python
pytorch torch.expand和torch.repeat的区别详解
2019/11/05 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
python如何使用代码运行助手
2020/07/03 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
企业统计员岗位职责
2013/12/13 职场文书
财会自我鉴定范文
2013/12/27 职场文书
超市5.1促销活动
2014/01/15 职场文书
开业庆典答谢词
2014/01/18 职场文书
邀请函模板
2015/02/02 职场文书
大学团日活动总结书
2015/05/11 职场文书
一次MySQL启动导致的事故实战记录
2021/09/15 MySQL
关于mysql中string和number的转换问题
2022/06/14 MySQL