百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

python实现QQ登陆验证码数据采集(python实验室腾讯扣叮)

cac55 2024-10-04 13:35 29 浏览 0 评论

在很多网站应用中为了防止爬虫或者是一些恶意数据获取行为的发生都会加入验证码这一防范机制,有静态验证码也有动态验证码,有纯数字验证码也有数字字母混合验证码,还有滑动验证码,简直是五花八门的存在。

当然了,正所谓,道高一尺魔高一丈,一系列验证码破解项目诞生了,当然大多数的验证码破解项目都是图像数据处理技术与机器学习或者是深度学习相结合形成的,我们今天先不去扯那么远了,想要做一个验证码识别的项目首先就是要获取到待识别的验证码数据,今天就是先来进行数据的获取。

本文的目标站点选择了我们都很熟悉的腾讯QQ登陆的验证码数据,获取方式很简单,具体实现如下:

#!usr/bin/env python
#encoding:utf-8
from __future__ import division
 
 
'''
__Author__:沂水寒城
功能: 网络验证码数据采集模块
'''
 
 
import os
import sys
import time
import json
import random
import urllib2
import datetime
import requests
import pandas as pd
from PIL import Image
from selenium import webdriver
from multiprocessing import Process
from fake_useragent import UserAgent
 
 
 
reload(sys)
sys.setdefaultencoding('utf-8')
ip_list=json.load(open('valid_ip_all.json')) #代理IP池
 
 
 
def generateRandomUA(num=100):
 '''
 生成随机的 User-Agent 字符串(使用第三方海量ua库)
 '''
 agent_list=[]
 user_agent=UserAgent()
 for i in range(num):
 one_agent=user_agent.random
 agent_list.append(one_agent)
 return agent_list
 
 
 
def getPageHtml(url,header,proxy,num_retries=3):
 '''
 多代理形式、超时重试机制,获取数据
 '''
 try:
 response=requests.get(url,headers=header,proxies=proxy,timeout=5)
 return response
 except Exception,e:
 time.sleep(random.randint(3,8))
 while num_retries:
 num_retries-=1
 print('Left tring number is: ', num_retries)
 return getPageHtml(url,header,proxy,num_retries)
 
 
def getVCPics(img_url,start,end,saveDir):
 '''
 下载验证码数据
 '''
 if not os.path.exists(saveDir):
 os.makedirs(saveDir)
 for i in range(start,end):
 print("Downloading",i+1,"......")
 header,proxy=buildProxy()
 try:
 img=getPageHtml(img_url,header,proxy,num_retries=3)
 pic_name=saveDir+str(i+1)+'.jpg'
 file_pic=open(pic_name,'ab')
 file_pic.write(img.content)
 file_pic.close()
 time.sleep(random.randint(1,4))
 except:
 pass
 
 
if __name__ == '__main__':
 print('captchaDataCollection!!!')
 url="http://captcha.qq.com/getimage?aid=1007901&r=0.38687027756482356"
 #验证码数据采集
 getVCPics(url,0,200,'QQ/')

上述代码中,我们加入了高可用IP代理措施,来避免由于频繁爬取造成的IP被封或者限制的问题,具体的IP代理数据我已经在之前的文章中提及,也上传到了我的资源目录里面,需要的话可以直接拿去使用,效用还是可以的。

getPageHtml(url,header,proxy,num_retries=3)是我们用于采集验证码数据集,考虑到可能出现的IP失效或者是网络请求出错等其他的问题设置的页面超时重传机制,num_retries表示的是默认的超时重传次数,比如:这里在第一次数据请求失败后会休眠随机的时间之后,重新进行请求,直到尝试到最大的重传次数才放弃当次的数据获取工作。这也算是网络数据采集中的一点容错机制吧,毕竟不是每一次网络请求都是正常进行的,总会有一些意外的问题产生,这也是以往数据采集过程中遇上的问题,所以就在这里加入了这样的容错机制。

我们暂时获取了200张图像数据,我在每次获取后都加入了一个随机休眠时间,做人要厚道不是嘛,别把人家网站搞得太累了呀是不是。数据的下载还是很快的,每一个验证码数据的下载本质上就是执行了一次get操作,然后将网站的响应结果保存本地就行了,速度还是很快的,但是不要为了过快的速度去设置很小的时间间隔,这样对人家网站正常的负载影响还是会挺大的,毕竟只是为了练习技术的,没必要不太道德。此外,本文只是出于研究的目的来进行的实验工作,不要用于其他的用途,造成不必要的麻烦,几百张的数据量对于我们简单的研究和分析来说肯定是足够了,如果后面需要做深度学习模型来进行验证码的识别的话就需要考虑使用小批量数据来进行数据增强处理,而不是一味地盲目去大批量进行数据采集。

程序运行输出截图如下:

采集到的图像数据截图如下:

从上面的结果整体来看:基于QQ验证码数据的完全识别难度还是比较大的。首先:这里原始字符数据的倾向、形变、叠压程度还是比较大的,而且验证码都是RGB图像,且还是空心图像,这样经过灰度化处理之后就连人都不好去识别了,毕竟验证码的本质目的就是【让人很容易识别出来,让机器很难识别出来】,可以说:QQ验证码很好地实现了这个目标。其次,原始图像数据中不同字符的位置,间距极不规律,在一般的验证码识别工作中,往往要对原始的验证码数据进行切割处理,最终的识别是基于单个字符进行的,但是由于位置、倾斜、间距等因素的存在,导致了字符切割难度的增大,这些都给验证码的识别工作带来的影响。

不过,验证码识别不是今天本文的研究内容,之后有时间的话再去看看怎么才能更好地识别出来验证码数据吧,今天的实践内筒到这里就先暂时告一段落了!记录一下!

相关推荐

QQ表情大图(QQ表情大图怎么发)

爷青回 | QQ经典老头像(爷青回这个梗出自哪里)

点个关注不迷路记得点击上方关注我呦点击表情包长按可保存至手机表情包素材来源于网络,仅供分享哦拿完图记得吱一声点击下方分享、在看让更多人看到...

史上最全QQ官方经典头像全面翻新,不光高清还会动

每当看到上面这些头像,总能想起那些年的"轻舞飞扬","缘分天空","追风少年",这些已经模糊的头像给我们留下了太深的印象。这次为了纪念QQ20周年,腾讯官方整合了早期的105个经典头像,进行了全面翻...

QQ最全表情含义图解意思(qq表情含义图解最新 新版 文字)

QQ都不陌生吧!对QQ的表情符号含义你了解多少呢?在本文中最全图解233个表情所表达的含义,供有需人享用。用过QQ的人都晓得它的创始人是马化腾。QQ于1999年2月10日正式推出。QQ是腾讯公司开发的...

海联真人版QQ经典表情(海联真人版qq经典表情在哪)

海联版傲娇的说声“耶”狂拽炫酷就是我淑女应该轻言细语萌萌哒的娇羞哎哟喂小丫头片子机智如我吓死宝宝了欧巴卡几嘛~今天天气好晴朗怎么样?是不是很有趣呢拿起手机给自己拍几张萌萌哒的美照吧...

QQ音乐·音乐灵感独家对话金曲奖「最佳单曲制作人奖」得主JADE

JADE-AllRightJADE-差-点JADE-Goodbye,GoodbyeJADE-IAmLovefeat.乔瑟夫Chillseph下面请听本期灵感电台节目:本期博客...

亿万富豪爱泼斯坦狱中“自杀”,他背后的神秘女人出现在洛杉矶快餐店

爱泼斯坦在狱中离奇“自杀”,但他身负同谋指控的前女友、英国社交名媛希莱恩·麦克斯维尔(GhislaineMaxwell),却意外地出现在了洛杉矶街头平民快餐店,边啃着汉堡,咽着薯条,嘬着奶昔,边埋头...

扛起星战大旗的你们 觉得星战女需要换一身衣裳吗?

马上进入2016年,除了各种总结盘点以外,2016年的新看点也是需要科普一下了。目前最令人期待的应该就是《星球大战》回归了!《StarWars:原力觉醒》1月10日上映,博主不是电影评论员,所以不会...

和人对话的时候,我,最怕的就是,看到了自己内心的惶恐和脆弱

IWannaBeYourSlave(LiveFromGlobalCitizenLive2021),Maneskin很多时候,哪怕最甘于寂寞的人,也需要和人发生关联,需要和这个世界沟...

2024年度串烧完整版(搞笑失败尴尬丢人版)来了

一首APT的时间带你回顾你的2024年年度歌单。·1.《免我蹉跎苦》黄龄。·2.《红昭愿》音阙诗听。·3.《苹果香》狼戈。·4.《免我蹉跎苦》黄龄。·5.《红昭愿》音阙诗听。·6.《苹果香》狼戈。·7...

一课译词:打工人(打工人的翻译)

下午好,各位打工人!近日,“打工人”爆红网络,受到各行各业年轻人的追捧,但这词到底说的是个啥?“打工人”是那些依靠体力或技术的劳动者的统称。除了赚钱这个最大的目标,别的啥也不想;他们意志坚定,也不会迟...

初级词汇题(一)柏拉图指出不是每个孩子都适合上学,你赞成吗?

初级词汇题(一)柏拉图在《理想国》中指出不是每个孩子都适合上学,你赞成吗?今天分享的题目是我基于英文原著改编的初级词汇题A开头的第81道题。背景知识拓展:什么是nativist(先天论者)?什么是哲学...

治愈系英文:每个说不想恋爱的人,心里都装着一个无法拥有的人

Therearesomanypeopleouttherewhowilltellyouthatyoucan't.Whatyou'vegottodoisturna...

首首经典!意大利流行乐队Maneskin作品I WANNA BE YOUR SLAVE

手机点击试听(上边)Maneskin是一支来自罗马的意大利流行摇滚乐队,由主唱DamianoDavid、贝斯手VictoriaDeAngelis、吉他手ThomasRaggi和鼓手...

国家电网新一代电子商务平台投标文件双层PDF制作最全教程

投标知识在招投标过程中,我们经常碰见有些文件要求制成双层PDF格式,那么双层PDF是什么呢?怎么制作呢?今天就给大家普及下。定义双层PDF双层PDF格式文件是一种具有多层结构的PDF格式文件,是PD...

取消回复欢迎 发表评论: