破解验证码

2022-09-20 19:08:06 浏览数 (1)

我们在登录很多网站的时候应该都会遇到验证码吧,今天要用第三方的自动识别。

今天用的网站是古诗文网,它的界面是这样的:

思路就是:爬取网页,获取图片,将图片加载到本地,然后再用第三方识别出来,马上开干。

最先做的还是导包

代码语言:javascript复制
import requests
from lxml import etree

接下来就是爬取网页

代码语言:javascript复制
def get_code():
    url = "https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0"
    }
    page_text = requests.get(url=url, headers=headers).text

然后就是要开始标签和属性的定位了,先打开F12查看一下图片所在的位置。

可以看到图片在一个class=‘mainreg2’的div标签下面的三个div标签中的第三个,可以这样定位://div[@class='mainreg2'][3]/img/@src(注意不是[4]啊!!!)这里有点疑惑,研究了一晚上,明天再继续研究。

早上好,继续研究,现在奇怪的就是div[@class='mainreg2']的标签应该在div标签中的第四个,但是索引却是3。然后我尝试打印了第一条索引的结果

代码语言:javascript复制
re = tree.xpath("//div[@class='mainreg2'][1]")

出来的结果居然有两个

代码语言:javascript复制
[<Element div at 0x1fff216e948>, <Element div at 0x1fff218cec8>]

那就说明索引为1的div[@class='mainreg2']的标签有两个,我猜测应该是因为他们不是同一级的

第一个1是他层级里的第一个,第二个1也是他层级里的第一(我的猜测),由于网上没有找到资料,我只能这样了。

代码语言:javascript复制
 tree = etree.HTML(page_text)
    # 验证码所在位置
    img_code = tree.xpath("//div[@class='mainreg2'][3]/img/@src")[0]
    # 图片地址
    code_url = "https://so.gushiwen.cn" img_code
    # 爬取图片
    img_data = requests.get(url=code_url,headers=headers).content
     # 持久化存储
    with open("b.jpg", "wb") as fp:
        fp.write(img_data)
    print("done")
get_code()

这里我把整个过程封装起来,因为这样当别的文件导入这个模块时就会自动调用这个函数。

现在来看第三方自动识别,这里用的是超级鹰,注册了账号以后还送了1000题分,现在来看看如何使用。

这是超级鹰破解验证码的价格体系,1000题分已经够我用很多次了。

要想使用超级鹰,我们还需要设置软件ID,下载api文档中的demo,大概意思就是,要借助这个接口来破解验证码吧。

选择python

将文件下好以后是一个压缩包,解压后,拖到pycharm中,是这样的一个包,那个Get_code.py是我自己拖进去的文件。

点开文件后是这样的,太长了,只截取一部门重要的地方。

这个时候我们将username和password替换成我们自己的账号和密码,刚刚的软件ID替换掉96001这串数字,b.jpg就是我们要破解的验证码的图片,下面的1004就是刚刚上面价格体系中的类型代码。所以刚刚我们爬取的图片就是放在这个文件夹中,然后运行这个文件就可以破解验证码了,在前面先导入一下刚刚的爬取验证码文件。

这样在运行时,首先导入模块,随后调用了里面的函数,这样我们的图片就保存在我们的文件夹中了,而且验证码还是动态变化的,每次重新执行都会重新对网页发起请求,所以每一次爬取下来的验证码都是不一样的,现在来试一下。

破解出来的验证码是fgh3,我们打开图片验证一下。

对了

这就是大致的过程,还可以用这个方法模拟登录,但我现在还没有找到合适的网站,需要cookie才可以,但是马上就要学到啦!

0 人点赞