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中的列表推导浅析
Apr 26 Python
Python3基础之条件与循环控制实例解析
Aug 13 Python
Linux下安装python3.6和第三方库的教程详解
Nov 09 Python
python样条插值的实现代码
Dec 17 Python
​如何愉快地迁移到 Python 3
Apr 28 Python
python进程和线程用法知识点总结
May 28 Python
Django 博客实现简单的全文搜索的示例代码
Feb 17 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
Feb 28 Python
mac在matplotlib中显示中文的操作方法
Mar 06 Python
Python中求对数方法总结
Mar 10 Python
Python使用Matlab命令过程解析
Jun 04 Python
python飞机大战游戏实例讲解
Dec 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
如何利用php+mysql保存和输出文件
2006/10/09 PHP
在PWS上安装PHP4.0正式版
2006/10/09 PHP
关于PHP5 Session生命周期介绍
2010/03/02 PHP
生成ubuntu自动切换壁纸xml文件的php代码
2010/07/17 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
js 自定义的联动下拉框
2010/02/07 Javascript
JS 实现完美include载入实现代码
2010/08/05 Javascript
JS 修改URL参数(实现代码)
2013/07/08 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
JS辨别访问浏览器判断是android还是ios系统
2014/08/19 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
2015/11/04 Javascript
javascript设计模式之module(模块)模式
2016/08/19 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
python实现黑客字幕雨效果
2018/06/21 Python
python实现websocket的客户端压力测试
2019/06/25 Python
python如何实现DES加密
2020/09/21 Python
python中watchdog文件监控与检测上传功能
2020/10/30 Python
python如何构建mock接口服务
2021/01/28 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
英国的领先快速时尚零售商:In The Style
2019/03/25 全球购物
C语言编程题
2015/03/09 面试题
临床专业自荐信
2014/06/22 职场文书
2014司机年终工作总结
2014/12/05 职场文书
2014年企业员工工作总结
2014/12/09 职场文书
2016年感恩节寄语
2015/12/07 职场文书
Python字符串常规操作小结
2022/04/03 Python