对于之前写了一个selenium版本的模拟快排,写的比较早,现在把这套代码再进行重新优化。此次主要改造代码的稳定性和调优。下面就主要改造的点进行简单介绍
改造一:加了内页浏览滚动,已经浏览次数
通过js控制滚动条的滚动,模拟用户浏览目标网站页面,再进行内页点击,最后退出浏览器。
改造二:改用鼠标随机移动点击
首先是获取元素的坐标以及宽高,从而获取元素的随机坐标,用于鼠标移动点击。
改造三:元素显性等待
此次获取元素全部用元素的显性等待self.wait = WebDriverWait(self.driver, 10),目的是保证页面元素稳定获取,监听。这样就不需要特定等待固定时间,加快了元素的获取速度。
旧方法
旧方法是用鼠标元素直接点击,这样点击,可能找不到点击痕迹
新方法
新方法是拿到坐标后,进行鼠标移动定位点击。
改造四:加入竞价点击和热点点击
此次在模拟点击过程中,加入了竞价点击的步骤,保证模拟点击的真实性。
竞价点击
热点点击
对于之前第一批用户在运行的时候,出现了一些百度识别验证的错误。对于这个错误,就不是代码本身的错误了。主要跟三个方面有关系。
由于代理ip平台提供的ip质量不高,大部分是已经被用过的ip,这部分ip肯定是被百度识别了,再分配这个ip去运行快排任务,自然肯定会被识别到。这就出现了有些ip可以运行,有些ip出现百度验证码的局面。
解决方法:1、换一家高质量的ip平台。2、强行识别百度验证码。3、换拨号服务器进行运行
第一种:换高质量ip平台
这里我用某某快代,也会出现一定的验证码问题,是否某某芝麻平台可能会好点
强行识别验证码
出现验证码的话,可以强行识别,这里我在代码里,也加入了识别验证的代码。
换拨号服务器
拨号服务器里的ip应该质量较高,在拨号服务器里应该运行较为稳定,而且也不用去管理,直接挂着就行了。我也写了同类型的拨号方式,也可以在拨号服务器中使用。
目前拨号服务器还未有完善好,不过selenium代理的方式在已经差不多可以运行了。现在源码已经挂在我的商城中了。商城入口:http://www.pyseo.club
如果购买的用户,不会安装或出现问题,可以随时咨询我,我可以协助安装。