selenium滑块解锁实现的研究

发布时间:2026/7/2 0:25:21

selenium滑块解锁实现的研究 滑块解锁该问题主要源于各个平台的登录验证或者针对爬虫或selenium的一种防范手段。由于各个网站的防爬技术的提高常规selenium似乎无法通过滑块验证以下提供普遍的滑块验证思路以供参考获取滑块本身的元素以及滑块所在长条的元素根据滑块元素的size和所在矩形元素的size便能得到滑块的偏移量使用selenium库中的actionChains中的click_and_hole和move_by_offset来控制滑块行动根据滑块本身的大小以及承载滑块的div的大小来获取偏移量offx slide1_back self.find_ele_is_presence(_slide1_back_locate) slide1_span self.find_ele_is_presence(_slide1_span_locate) 获取滑块的起始坐标location start_location slide1_span.location # 获取滑块所在长条的长宽大小 background_size slide1_back.size 4.滑块的滑动范围[开始位置的横坐标减去滑片的宽度],由于是平移所以纵坐标没有变化 x_location background_size[width] - start_location[x] y_location start_location[y]然后通过对滑动轨迹即一定时间内滑动的偏移量的变化来模拟真人操作试图通过检测def ease_out_quad(x): return 1 - (1 - x) * (1 - x) def ease_out_quart(x): return 1 - pow(1 - x, 4) def ease_out_expo(x): if x 1: return 1 else: return 1 - pow(2, -10 * x) def get_tracks(distance, seconds): :param distance: offset :param seconds: 拉动时间 :return: tracks [0] offsets [0] # print(np_value:, np.arange(0.0, seconds, 0.1)) for t in np.arange(0.0, seconds, 0.1): offset round(ease_out_quart(t / seconds) * distance) tracks.append(offset - offsets[-1]) offsets.append(offset) return offsets, tracks结论遗憾的是有些网站的滑块检测条件极为苛刻又难以捉摸即使使用了随机暂停加速度变化等操作来模拟真人滑动还是无法通过检测。疑似要通过人工智能的方式来解决。浏览器页面滚动使用JS进行滚动因为一般滚动条都不作为单独的元件出现而是附庸在某个div或table上当这些元件展示内容过多时便会自动出现滚动条所以难以通过selenium定位然后actionChains调用方法进行拖拽的方式控制页面滚动需要通过JS来完成对滚动条的操作。常见JS针对整个页面进行滚动def test_scroll_to(): chromeOptions webdriver.ChromeOptions() chromeOptions.add_argument(--start-maximized) driver webdriver.Chrome(chromeOptions) driver.get(https://www.jd.com/) n1 while True: # driver.execute_script(fdocument.body.scrollTop {100*n};) driver.execute_script(fwindow.scrollTo({(n-1)*50}, {n*50})) n1针对单个元素的内嵌滚动条进行滚动document.querySelector(.page-content).scrollTo(0,300) document.querySelector(.ant-table-content).scrollTo(-100,0) 通过定位到存在内嵌滚动条的元件然后使用scrollTo(x,y)进行滚动。最后下方这份完整的软件测试视频教程已经整理上传完成需要的朋友们可以自行领取【保证100%免费】​​​软件测试面试文档我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。

相关新闻