前言
前一阵子打球认识了一个小学生,为了骗他钱,吹了好半天,什么盗取心上人的QQ密码,吃鸡外挂,学校饭卡无限充值,最终达成交易10块钱帮他刷QQ赞。
回家赶快百度研究了一下,原来刷赞很简单:很多网站都可以每天免费领取100个赞,心想把这些网站统计一下,写个程序每天自动提交不就可以了。但是我仔细看了一下,几乎所有的网站都需要人工验证才能免费领取,由于暂时我的客户数量较少,先手工领一下吧。

然后又发现一个站可以通过分享推广链接来刷。想起来之前帮别人用PHP模拟IP刷票,同理应该可以用来刷赞。于是简单写了个页面,每天能刷几千个赞。
给小学生刷了几万个赞,取得他的信任后,我说让他做总代理,也不收他费用了,让他发展下线,让他的同学朋友都来刷赞,然后给他15%的抽成,他很高兴。
我开始考虑怎么用程序过人工验证,这样才能实现每天免费领取几百万个赞,建立我的刷赞帝国。
代码正文
本文以geetest官方demo为例,使用nodejs与selenium模拟人工滑动验证码。
先百度一番,发现都是一两年前的文章,没有现成的代码。读来读去其实思路都差不多:
- 模拟点击
- 获取缺口的坐标位置
- 模拟鼠标拖动滑块
一、模拟点击
selenium和nodejs的安装使用就不赘述了,官网文档都有。
新建一个firefox实例:
let options = new firefox.Options()
.setProfile('C:/Users/2bt/AppData/Roaming/Mozilla/Firefox/Profiles/m1mwcwm8.default')
let driver = await new webdriver.Builder().forBrowser('firefox').setFirefoxOptions(options).build()
我这里添加的设置项是为了每次调试的时候在firefox中改动的参数保留下来,比如浏览器的位置,大小。不然每次启动firefox都是新的临时窗口。其次是为了加载我专门为了方便测试写的一个模拟鼠标指针的扩展插件(selenium不显示鼠标的移动轨迹),但比较郁闷的是自己写的扩展没法安装。
打开极验首页,并且把验证区域置顶:
await driver.get('http://www.geetest.com/en/')
// 置顶DOM
// await driver.executeScript('window.scrollBy(0, 5142)')
await driver.executeScript('document.querySelector(".gt-en--experience").style.position = "absolute";document.querySelector(".gt-en--experience").style.top = 0')
注释掉的那个代码可能会因为浏览器/分辨率/系统的不同产生误差,所以直接把页面CSS的position设置为absolute放在页面顶部就可以。这样也为了方便后面截取缺口的图片(若使用第一种方案,直接截图得不到想要的区域,需要截取完整的页面图片,然后计算缺口在页面的相对位置,再裁剪图片才能得到,很麻烦)。

选择SLIDE方式验证并且点击验证按钮:
let slide = await driver.wait(webdriver.until.elementLocated(webdriver.By.css('.experience-box .box-left ul li:nth-child(2)')), 10000)
await slide.click();
console.log('选择滑动验证')
let btn = await driver.wait(webdriver.until.elementLocated(webdriver.By.css('.geetest_btn')), 10000);
await btn.click()
console.log('点击验证')

本文介绍了如何使用selenium和nodejs模拟geetest滑动验证的过程,包括模拟点击、获取缺口坐标位置以及模拟鼠标拖动滑块。通过分析缺口图片并调整拖动策略,实现了初步的验证模拟。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



