12306网站登录验证码破解(手动版)

一、获取验证码图片

首先想要破解验证码,必须先拿到登录的验证码

经过网页开发者工具分析,可以通过两种方式获取验证码图片:
第一种方式:
通过解密方式,对url进行base64解密,然后在进行二进制数据保存为图片
在这里插入图片描述
代码实现:

import base64

# 12306点击图片验证的本质:就是通过发送图片所处的坐标去后台验证的
# 第一种取验证码图片方式,就是解码base64加密方式
# 中间的加密字符串是不会变的
'data:image/jpg;base64,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'

pic_str = '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'

pic_decode = base64.b64decode(pic_str)
# print(pic_decode)
with open('code.png','wb')as fp:
    fp.write(pic_decode)

第二种获取验证码图片的方式:
在这里插入图片描述
这个url是后台用于生成验证码图片的接口,直接打开这个链接
在这里插入图片描述
可以发现全是这种跟第一种方式中的加密字节一样,但是经过反复尝试得到一个结果,就是讲64及之后所有的字符串全部删除掉,然后访问此链接就可以直接打开图片
在这里插入图片描述

所以我们可以通过直接请求此链接的方式,保存验证码图片,然后在基于这张图片进行处理。

二、验证码校验

通过网上资料查找及分析,12306验证码识别是通过我们鼠标点击图片,同时生成相应图片所处的像素位置,发送给后台,后台验证成功方可进行登录。
1、通过分析图片,获取8张图片的对应位置像素
8张图片大小大致为282x142,每张图片的上下左右间隔大致为5px
我这里通过随机模块生成对应位置像素,存储为一个字典

# 验证码图片坐标
def code_position():
    # 利用随机模块生成8张图片的坐标
    position_dic = {
        '1': f'{random.randint(5,67)},{random.randint(5,67)}',
        '2': f'{random.randint(67+5,67*2+5)},{random.randint(5,67)}',
        '3': f'{random.randint(67*2+5+5,67*3+5+5)},{random.randint(5,67)}',
        '4': f'{random.randint(67*3+5+5+5,67*4+5+5+5)},{random.randint(5,67)}',
        '5': f'{random.randint(5,67)},{random.randint(67+5,67*2+5)}',
        '6': f'{random.randint(67+5,67*2+5)},{random.randint(67+5,67*2+5)}',
        '7': f'{random.randint(67*2+5+5,67*3+5+5)},{random.randint(67+5,67*2+5)}',
        '8': f'{random.randint(67*3+5+5+5,67*4+5+5+5)},{random.randint(67+5,67*2+5)}'
    }
    pprint(position_dic)
    return position_dic

2、验证码校验
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在开发者工具中可以找到一个用于校验验证码的接口连接,通过传递参数来验证,除了坐标的参数answer,其他参数基本固定

# 验证码校验
def code_valid(position_dic):
    coorList = []
    pos = input('请输入图片位置(1-8):')
    pos_list = pos.split(',')
    for p in pos_list:
        coorList.append(position_dic[p])
    position = ','.join(coorList)
    print('验证码坐标:',position)

    url = 'https://kyfw.12306.cn/passport/captcha/captcha-check'
    params = {
        'answer': position,
        'rand': 'sjrand',
        'login_site': 'E'
    }
    response = session.get(url=url,headers=headers,params=params)
    print(response.text)
    return position

在这里插入图片描述

三、登录网站

由于网站的登录页面,不容易找到,一般登录失败的时候回显示出来
在这里插入图片描述
post请求传递的参数:
在这里插入图片描述

但是我这里通过请求这个url,进行post数据提交,发现每次验证校验都成功了,但是就是登录失败。这里必须添加以下的cookie才能识别,允许登录

session.cookies.update(
        {
            'RAIL_EXPIRATION':'1569132689668',
            'RAIL_DEVICEID':'Ry6Q7Tkau6lvtQFj-1-qD3Mrde9MOKac4kGC5MCLRvgQ5ADb2vySV_SptrTnvjckvQxVWcocw7621ci-T2TmMlg4pChroHuQoXvciR1XyZ52i4ZSiS_dClAx8x_Ck3tg_4or7LxX15-nWH7ilOFn53WcrBup-bN8',
            'route':'c5c62a339e7744272a54643b3be5bf64'
        }
    )

完整代码如下:

import requests
import random
from pprint import pprint

session = requests.session()

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}



# 生成验证码图片
def make_verification_code():
    # 获取验证码图片
    code_pic_name = 'code1.png'
    code_pic_url = 'https://kyfw.12306.cn/passport/captcha/captcha-image'
    code_res = session.get(url=code_pic_url, headers=headers).content
    with open(code_pic_name, 'wb')as fp:
        fp.write(code_res)
        print('生成验证码成功!')

    return code_pic_name

# 验证码图片坐标
def code_position():
    # 利用随机模块生成8张图片的坐标
    position_dic = {
        '1': f'{random.randint(5,67)},{random.randint(5,67)}',
        '2': f'{random.randint(67+5,67*2+5)},{random.randint(5,67)}',
        '3': f'{random.randint(67*2+5+5,67*3+5+5)},{random.randint(5,67)}',
        '4': f'{random.randint(67*3+5+5+5,67*4+5+5+5)},{random.randint(5,67)}',
        '5': f'{random.randint(5,67)},{random.randint(67+5,67*2+5)}',
        '6': f'{random.randint(67+5,67*2+5)},{random.randint(67+5,67*2+5)}',
        '7': f'{random.randint(67*2+5+5,67*3+5+5)},{random.randint(67+5,67*2+5)}',
        '8': f'{random.randint(67*3+5+5+5,67*4+5+5+5)},{random.randint(67+5,67*2+5)}'
    }
    pprint(position_dic)
    return position_dic

# 验证码校验
def code_valid(position_dic):
    coorList = []
    pos = input('请输入图片位置(1-8):')
    pos_list = pos.split(',')
    for p in pos_list:
        coorList.append(position_dic[p])
    position = ','.join(coorList)
    print('验证码坐标:',position)

    url = 'https://kyfw.12306.cn/passport/captcha/captcha-check'
    params = {
        'answer': position,
        'rand': 'sjrand',
        'login_site': 'E'
    }
    response = session.get(url=url,headers=headers,params=params)
    print(response.text)
    return position

def login(position):
    url = 'https://kyfw.12306.cn/passport/web/login'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
        'Referer': 'https://kyfw.12306.cn/otn/resources/login.html'
    }
    session.cookies.update(
        {
            'RAIL_EXPIRATION':'1569132689668',
            'RAIL_DEVICEID':'Ry6Q7Tkau6lvtQFj-1-qD3Mrde9MOKac4kGC5MCLRvgQ5ADb2vySV_SptrTnvjckvQxVWcocw7621ci-T2TmMlg4pChroHuQoXvciR1XyZ52i4ZSiS_dClAx8x_Ck3tg_4or7LxX15-nWH7ilOFn53WcrBup-bN8',
            'route':'c5c62a339e7744272a54643b3be5bf64'
        }
    )
    data = {
        'username': '账户',
        'password': '密码',
        'appid': 'otn',
        'answer': position
    }
    response = session.post(url=url,headers=headers,data=data).content.decode('utf-8')
    print('是否登录成功',response)


if __name__ == '__main__':
    # 生成验证码图片
    code_pic_name = make_verification_code()
    # 生成验证码图片坐标
    position_dic = code_position()
    # 验证码校验
    position = code_valid(position_dic)
    # 登录
    login(position)

在这里插入图片描述

©️2020 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值