为什么亚马逊,facebook等养号不能只用selenium自动化,如何使用VMlogin指纹浏览器实现selenium自动养号溜号
为什么亚马逊,facebook等养号不能只用selenium自动化,我们可以用以下这个例子来进行说明:某平台自动化算法分析:
获取验证码的同时, 会同时请求接口获取一个加密字符串, 这个加密字符串会最后的时候作为参数传入
想要获取这个加密字符串呢, 需要先生成一个lid(此时应该有人已经猜到是哪个平台了..), 生成方法也在js中直接提取就好了, 是时间戳+随机等长的字符串(用到了Math.random)。然后基于lid进行一定的封装, 加上一个固定的key和其他固定的参数,再走一下加盐编码即可(盐值也是在js中写死的)
然后进行第一次请求, 会传回一个新的lid, 再基于这个新的lid重新封装, 加入一些浏览器的属性参数,再重新进行加盐编码(盐值与上一个请求相同),然后进行第二次请求, 最终获得加密参数:
我们来到了第三个关卡:验证码缺口坐标破解
这里给出三种常用的办法:
- opencv识别破解
- 第三方打码平台识别破解
- 自己训练模型识别破解
具体的实现这里就不过多赘述了~ 每种方法都是可行的
核心加密参数生成我们在滑动之后, 通常会触发接口请求, 会有很多参数, 比如刚才预生成的加密参数
其中通常还会有另一个核心的加密参数, 一般来说很长, 其中夹杂着浏览器指纹, 用户的行为轨迹, 坐标点等各种信息, 同时也是加密最严重的参数
一般来说这个参数都有一个初始化操作, 比如这个样子:
会把一些当前时间戳, 版本号, referer, 加密版本号, token等作为参数穿进去其中也会校验是否使用了selenium之类的自动化工具
初始化之后呢, 到了我们的重头戏: 行为轨迹
总共收集了两个行为轨迹
- 一个是用户开始滑块后的所有移动轨迹, 会收集到一个全局列表里, 然后等到最后一次性循环触发
- 一个是用户的各种鼠标键盘事件, 鼠标移动事件触发的间隔事件较长
这里可以人为收集几次成功的行为轨迹,分析一下对方的行为轨迹算法, 然后模拟生成即可, 生成之后的行为轨迹大概准确率有80%以上吧, 需要注意两个地方:
- 过程中采用了大量的随机值, 对方的模型也会检测是否足够随机, 所以, 需要加入各种random来微调坐标
- 轨迹事件传入的时候也会传入时长, 两个行为轨迹的时长是有关联的, 对方的模型也会检测两个行为轨迹之间的关联性
只要注意这两点, 相信你也可以写出一个足够拟真的更好的行为轨迹生成器()~OK,准备工作已经做好了, 只要调用接口传参数即可:
最后的准确率大概在30%左右吧, 其实还有一定的优化空间~
所以说,攻防永远是收益和成本之间的平衡。如果完全依赖于selenium自动化来进行FB/AMZ等平台的养号,风险还是存在的。我们可以借鉴一些防关联软件来进行优化,比如现在用的比较好的VMlogin防关联浏览器。
https://www.vmlogin.cc/
获取三天免费试用,可+:vmlogincc
我们来看看测试工具的主界面:
VMLogin API token 是用户的API令牌,这个需要用户登陆到Web后台,在帐号管理->我的帐户 中可以设置这个 token 值。
点击 Generate Token 随机生成 token 值 ,再点提交确认修改。
VMLogin 自动化测试设置里的 IP 和 端口值 ,对应的是VMLogin 客户端上设置对应值。
在客户端我的帐户-》浏览器自动化设置中要启用浏览器自动化设置并保存设置,这样所设置的端口才会打开,这个端口也是让自动化测试工具来控制哪个配置文件浏览器启动的。
下面讲解一下各种动作定义:
1、打开网址:内容填写网址,例:https://www.vmlogin.cc2、设置窗口大小:内容格式 800,6003、隐式等待:内容时间为毫秒 1000 = 1秒4、强制等待:内容时间为毫秒 1000 = 1秒5、FindElementByID:可以填写html控件的id值6、FindElementByXPath:此项是解决有些html控件没有id值的问题,如://input[@name=“password” and @type=“password”]7、SendKey:发送文字,支持中英文8、点击: 如果前面有使用FindElementByID/FindElementByXPath找到过控件,那这里内容为空就可以直接点击上次找到的控件,也可以写html控件id值9、截图:保存当前网页显示的内容为 bmp 文件,内容可以是保存的 bmp 文件全路径,内容为空则会保存在安装目录下的一个文件夹中10、SwitchToFrame:如果网页中有多个Frame,可以用这个命令来切换要使用哪个 Frame.11、ExecuteScript:内容可以填写JaveScript 脚本代码,这个执行不会等会脚本执行就会返回。12、ExecuteScriptByASync:内容可以填写JaveScript 脚本代码,这个执行是阻塞等待脚本执行完成。
点击 工具界面中的 Demo 示例 链接会生成一个简单的示例动作列表。如何写出自己想要效果动作脚本,还需要用户自己从简单入手,了解原理后再添加动作,完成一些比较复杂的各种需求。
案例:
这里的介绍起个抛砖引玉,可以根据自己的行业做出任何的工具功能。