python 图片解密:base64

本文通过一个京东登录验证码的案例,详细介绍了如何使用Python进行base64加密图片的解密。首先讲解了base64加密解密的基本原理和模块用法,然后借助selenium自动化测试工具下载并解析加密的验证码图片。同时,提供了selenium爬虫的其他学习资源链接,鼓励读者分享学习心得。
Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

引言

小编在在一些批量下载图片的爬虫程序的过程中,发现了一种被base64加密的图片,今天一个京东案例带大家彻底掌握base64加密破解,建议大家先看视频再去研究代码,思路才是最重要的。

base64加密解密

1、介绍:base64是一种经常使用的加密方式,在一些项目中一些图片数据就是通过base64加密传输的,base64是一种防君子不防小人的加密方式,生产的编码可逆生成的编码都是ascii编码,python有一个专门的内置模块来实现base64算法,就是base64模块;
2、优点:速度快,ascii编码人眼不可理解;
3、编码非常长,且极易被破解,仅用于加密非关键信息;

base64模块用法

import base64

image = '需要base64加密的图片数据'
# base64加密图片数据
image_base64 = base64.b64encode(image)
# 解密base64加密的图片
image_ = base64.b64decode(image_base64 )

案例一:下载京东登录验证码图片

辅助视频:

京东滑块图片和缺口图片XPATH定位分析

我们借助WEB自动化测试工具selenium来完成案例一,我们来开发测试用例,代码如下:
如果对selenium的使用不是很会的小伙伴,可以去看我们另外几篇基于selenium的爬虫博客,链接如下:
1、python selenium爬虫入门案例day01:中国图片库
2、python selenium爬虫入门案例day02:珠宝匠
3、python selenium爬虫入门案例:day03:Foodiesfeed

# coding:utf-8
import random
import base64
from selenium import webdriver
from selenium.webdriver.common.by import By


# 京东网址
url = "https://www.jd.com/"
# 打开浏览器
driver = webdriver.Chrome()
# 显示休眠
driver.implicitly_wait(random.randint(3, 8))
# 访问京东官网
driver.get(url)
# 浏览器窗口最大化
driver.maximize_window()
# 定位超链接使用LINK_TEXT
driver.find_element(By.LINK_TEXT, '你好,请登录').click()
driver.find_element(By.LINK_TEXT, '账户登录').click()
# 定位输入框使用XPATH
driver.find_element(By.XPATH, '//*[@id="loginname"]').send_keys("13437246893")
driver.find_element(By.XPATH, '//*[@id="nloginpwd"]').send_keys("123456789lhz.")
driver.find_element(By.LINK_TEXT, '登    录').click()

slider_ = driver.find_element(By.XPATH,
                              '//*[@id="JDJRV-wrap-loginsubmit"]/div/div/div/div[1]/div[2]/div[2]/img')
verification_ = driver.find_element(By.XPATH,
                                    '//*[@id="JDJRV-wrap-loginsubmit"]/div/div/div/div[1]/div[2]/div[1]/img')
# get_attribute("获取标签属性值")
# 将data:image/png;base64,替换掉的原因是,这部分是图片头部,不是图片内容
# image指图片,png指图片格式,base64指加密算法,后面剩余部分才是加密后的图片数据
slider_base64 = slider_.get_attribute("src").replace("data:image/png;base64,", "")
# 将被base64加密过的图片解密
slider = base64.b64decode(slider_base64)
# 保存滑块图片
with open(file="slider.png", mode="wb") as f1:
    f1.write(slider)
# get_attribute("获取标签属性值")
verification_base64 = verification_.get_attribute("src").replace("data:image/png;base64,", "")
# 将被base64加密过的图片解密
verification = base64.b64decode(verification_base64)
# 保存缺口验证码图片
with open(file="verification.jpg", mode="wb") as f2:
    f2.write(verification)

视频讲解中,测试写出来的定位滑块和缺口图片的XPATH代码

这个xpath用法的原理就是:定位src属性值包含指定字符串的img标签
//img[contains(@src, 'CCZx8=')]
//img[contains(@src, 'ggllk')]

希望在此学习小伙伴能在评论区,留下自己的学习总结,让优快云一起见证大家的进步

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自学互联网

努力帮助更多的人

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值