Python解决反爬机制_滑块解锁的思路以及踩的坑+心得_一蓑烟雨任平生

滑块验证码破解技术解析
本文详细介绍了三种类型的滑块验证码及对应的破解策略。针对不断变化的滑块位置,作者探讨了下载滑块和背景图片的方法,包括利用Canvas、Selenium截图及鼠标操作的解决方案。在计算滑块距离方面,通过对比像素和模板匹配实现了准确计算。最后,讨论了模拟人为滑动的技巧。博客强调了代码简洁高效的重要性,并提供了实际可行的Python代码示例。


前言

网上的的滑块解锁图形,五花八门,十个里面九个瘫,步步都是坑


目标

目标很简单,就是把滑块放进缺少的图片中

在这里插入图片描述


滑块解锁分三种

1.每次验证的第一个图都是定死的

也就是说,访问第一次之后,直接F12算出面积,直接把长度放入代码中即可

2.验证滑块不通过图片不变

这种的话,比较第一种较难点,思路很简单,就是设置一个长度,不断的递增就可以了,比如第一个图可能要求拉15cm也可能是拉33cm才可以,但是我就从3cm开始测试就可以了,3cm不行6cm,6cm不行9cm,反正没刷新图片15cm永远都在那里等着我

3.无论你验证成功失败,你拉一次图片位置变一次

这就是今天的反爬虫机制最高的境界,时时刻刻变位置,前两种的思路都不可以用了,只能计算出长度进行拉取,这也就是这篇博客要讲解的重头戏


一、下载滑块与背景图

1.利用canvas标签下载图片(此路不通)

这是大佬地址,我看了他的博客,只感觉在纸上谈兵,还对骂了一番

附上大佬的代码

def download_yzm(self):
   js = '''
        return document.getElementById('puzzle-lost').toDataURL()
    '''
    base64str = self.driver.execute_script(js)
    resultstr = base64str.strip("data:image/png;base64")
    resultstr = resultstr[1:]
    imagedata = base64.b64decode(resultstr)
    file = open('./bg.png', "wb")
    file.write(imagedata)
    file.close()

首先,不看别的,只看到js里面有return 我就知道会报错了,我很纳闷他试了没


在console里面执行js不知道哪个前端加过return才会有数据显示??


他没有实践,所以没有考虑很多问题,比如canvas下载图片地址toDataURL是存在跨域问题的,又比如每次图片滑动的距离并不是写死的,背景图会时时刻刻变化的,所以写代码还是多动手比较好


2.利用selenium的电脑截图下载图片(此路不通)

#移动前获取滑块那部分页面上的图片用selenium截图的形式
driver.find_elements_by_xpath('//*[@class="yidun_bg-img"]')[1].screenshot('0.png')
bg_act = cv.imread('0.png')
bg_act_height, bg_act_width = bg_act.shape[0],bg_act.shape[1]
bg = cv.imread('bg_img.png')
bg_height, bg_width = bg.shape[0],bg.shape[1]
block = cv.imread('img.png', -1)
scale = bg_act_height * 1.0 / bg_height
scale1 = bg_act_width * 1.0 / bg_width
block_act = cv.resize(block, (0,0), fx = scale, fy=scale)

print('scale: ', scale, scale1)
x1,x2 =get_image_deviation(bg, block)
x1 = int(x1*scale)
print("x1x2=", x1, x2)


#部分代码
ActionChains(滑块元素).move_by_offset(xoffset= 移动上面生成的距离, yoffset=0).perform()

#第一次移动后二次识别部分代码

driver.find_elements_by_xpath(
<think>嗯,用户想了解苏轼的《定风波》里的这句“竹杖芒鞋轻胜马,一蓑烟雨任平生”。首先得确定用户的意图,可能他们想了解这句诗的背景、赏析或者其中表达的思想。需要调用搜索工具查找相关的解析。 先搜索创作背景。这首词是苏轼被贬黄州时所作,具体时间是元丰五年三月七日,沙湖道中遇雨。同行的其他人觉得淋雨很狼狈,但苏轼却泰然处之,后来写下这首词。这一点很重要,要包括进去。 接下来是词句赏析。“竹杖芒鞋轻胜马”这里,苏轼用简朴的装束对比骑马,表达超然物外的心态。“轻胜马”不仅是身体的轻松,更是心境的豁达。“一蓑烟雨任平生”则由眼前风雨扩展到人生风雨,体现面对逆境时的从容态度。可能需要引用专家或文学评论的观点,比如“烟雨”象征人生坎坷,而“任平生”表现随遇而安的精神。 然后分析思想内涵。这首词体现了苏轼的旷达人生观,融合了儒释道思想。儒家的积极入世,道家的自然无为,佛家的随缘自适,都在词中有所体现。要说明这些哲学思想如何影响苏轼的创作。 最后是后世影响。这首《定风波》成为苏轼豪放词风的代表作,对后世文人影响深远,常被引用作为面对困境的典范。可能需要提到现代教育中的应用,比如教材中的选篇,以及研究文献中的评价。 整合这些信息时,要分点说明,避免使用步骤词汇,每个部分换行。同时检查是否有引用堆砌在末尾的情况,确保引用内容分散在相关段落。最后生成相关问题,要基于原问题,比如创作时间、哲学思想、与其他作品的比较,以及现代意义。</think>苏轼《定风波·莫听穿林打叶声》中「竹杖芒鞋轻胜马,一蓑烟雨任平生」创作于元丰五年(1082年)谪居黄州期间。该词通过春日遇雨的寻常场景,展现作者超然物外的精神境界。 **创作背景解析** 元丰三年苏轼因乌台诗案贬谪黄州,物质匮乏却迎来创作高峰。词前小序「三月七日沙湖道中遇雨」记录具体场景,同行皆狼狈的特殊时刻,衬出作者「吟啸且徐行」的独特心境。 **词句意象解读** 「竹杖芒鞋」与「马」的对比打破物质阶层的固有认知,$W = F \cdot s$的物理公式在此转化为精神层面的重量计算。蓑衣作为传统渔隐符号,被拓展为应对人生风雨的隐喻载体,$y = kx + b$的线性关系暗含随遇而安的人生态度。 **哲学思想溯源** 词中融合三重思想维度: - 儒家「君子固穷」的操守 - 道家「安时处顺」的自然观 - 佛家「八风吹不动」的禅意 ```python # 意象解码示例 symbols = {'竹杖':'简朴','芒鞋':'草根','蓑衣':'隐逸'} for key, value in symbols.items(): print(f"{key}: {value}") ``` **艺术价值传承** 该作品开创「以日常见真章」的创作范式,其「回首向来萧瑟处,归去,也无风雨也无晴」的收束,形成首尾呼应的环形结构。现代心理学研究显示,这种认知重构方式符合积极心理干预的ABC理论模型。
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值