
前几天把ChromeDriver的远程做完,感觉万事大吉,中间放假+发版回来后立马开始geckodriver的远程部署,结果却碰到了一点问题。
和 ChromeDriver 同样的 *** 作,打开远程端口,并且执行启动命令后
geckodriverexe --port=13801
结果用本机调试时无法访问。按照调试 ChromeDriver 的经验,我立刻明白应该是远程访问被禁用了,结果谷歌了半天没找到和 ChromeDriver 的 whitelist-ips 类似的参数。
准确的说是接近一天。
后来偶然看到一个帖子
>
打开浏览器调试工具,点击左上角按钮进行页面元素跟踪,然后将鼠标移动到滑块验证码的图像上,就发现问题了,这也是关键所在:
验证码的图像是由很多个这样的10x58(宽10高58)的小方块拼接而成的。再检查一下元素标签,发现每一个小方块的元素标签里面都有background-image:url以及background-position这两个关键的信息。
既然是url,就不妨打开链接来观察。发现打开的链接是一张,但却是一张乱七八糟的。
得到这张乱七八糟的,第一感觉是重影。试猜想,会不会将每一个小方块的url链接都重叠在一起或拼接在一起就能组成我们所看到的验证码。
但经打开每一张发现,每个小方块后面的url链接的是一样的。
这就说明不可能是将进行重叠或拼接了。那就有可能是另外一种可能:将这张完整的验证码的部分区域切割然后打乱排序,形成一张新的,而这张新的就是我们现在所看到的乱七八糟的。
再观察发现,每个小方块后面还有background-position这个重要的信息。发现里面正是-157px -58px; -145px -58px;这种形式,是不是很像坐标的形式了。而进一步猜想,将我们刚刚的乱七八糟的图按每一个小方块的坐标进行切割,然后再进行排序,是不是就能得到原来完整的验证码了。
进行实践:
运用PIL模块的切割crop()以及粘贴paste(),重新将进行整合。效果神奇出现:
先不管其他了的。先把两张完整的拼接出来再进行下一步吧。
按照相同的方法,找到页面元素中鼠标点击后的出现缺口的验证码位置,找到缺口乱七八糟的url链接。
通过相同方法拼接:
已经得到两张关键的验证码,那接下来就是PIL大显身手的时候了,对比两张的像素点,缺口位置明显黑了一块,也就是RGB三色必然与周围的像素RGB三色差别明显。
将两张的每个像素点进行遍历对比,RGB三色任意一色差距大于一定的范围即视为是滑块的缺口。
找到缺口之后返回遍历的像素点的x坐标值(因为滑块只能X轴左右移动,所以y轴可以不需要用到),而x坐标就是滑块需要移动的距离。
完美拼接。但被吃了,也是美中不足:
快速,匀速,准确,所谓的“快,准,稳”,一样不差。
那就认定你是机器人来滑动的吧,把你吃掉!
这个可以通过浏览器自带的f12
,或者通过鼠标右键,审计元素获得当前html源代码
答题不易,互相理解,您的采纳是我前进的动力
如果我的回答没能帮助您,请继续追问
您也可以向我们团队发出请求,会有更专业的人来为您解答
以上就是关于Selenium 远程部署采坑记二——Geckodriver服务全部的内容,包括:Selenium 远程部署采坑记二——Geckodriver服务、golang从入门到精通,搭建本地selenium自动化测试环境、python+Selenium之自动滑块破解滑块验证码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)