最近在做猫眼的项目,每天需要大量采集猫眼的座位图的,但是大量采的话经常会跳转到猫眼的滑块验证码页面。如图: 如果不划过的话又没法继续下去,所以在如何划过验证码而不被识别这上面,真伤费了好大劲。 美团的滑块当滑动的时候会识别selenium,当发现是程序驱动的时候,会直接拒绝。并且还会识别轨迹,当用同样的轨迹滑动的时候,刚开始成功率很高,然而运行一段时间后,成功率会慢慢降下来了,最后就完全不可用了。还有会检测你的浏览器的useragent,selenium使用同一个useragent的话,也是开始滑动的成功率很高,慢慢的成功率会降下来。但是当我们手动滑动的时候是可以成功的。
目前是跟淘宝的登录解决方案一样,编译chromedriver,防止被识别是程序驱动。当然也可以使用pypupeeter模块来做。还有网站检测window.navigator.webdriver的值,在非selenium环境下其值为undefined,而在selenium环境下,其值为true。而我们打开开发者模式的时候,selenium环境下的值也变为undefined了。
因为我们用代码写的轨迹无论怎么写,都会有一定的规律。所以这个也没有太好的解决方案,只能写很多套轨迹方程来做,甚至驱动鼠标来滑动,即使这样,发现时间长了仍然会被识别。对方应该是用了神经网路方面的技术来搜集异常的轨迹。 目前写了一套轨迹的实现方法,在美团验证这个滑块上非常好用。
这个其实好办,在驱动浏览器的时候我们随机切换useragent就行,因为我用的chrome,所以得找很多chrome的useragent,用其他浏览器的useragent是没法滑动成功的,如果少的话用不了几天就全被美团那边标记了,这样上面的轨迹的成功率就会变的很低。
感觉做爬虫真的很头疼啊,说不定什么时候跑的好好的爬虫突然就挂了。 ++++++++++++++++++++++++++++++++++++++ 现在验证图片是这样的,你说多可恨: 给了一个canvas画布,要求再画布上用鼠标连起指定颜色,看来只有直接操作鼠标来做了。
