本文主要是针对2020年12月问卷星升级后的selenium具体问题的探讨,就不涉及具体的代码了,有心的话找到答案并不难。
(1)首先要说的,现在采用selenium默认方法进行填写问卷的话,百分百的会出现智能验证按钮。继续用selenium进行验证也不难,难点在于你会验证失败。
frank=c兄在他的帖子()里探讨了这个问题,结论是通过在header里面添加参数并不能解决验证失败的问题,转而采用传统构建 post 请求,通过参数传递的方式进行填写,并成功了。不过这个方法真的有点学习难度,而且没有用selenium的自动化这还有灵魂吗?秉着这种白piao要彻底的精神,采用逆向思维来思考了一下,既然通过添加参数没法解决的问题,那何不采用减法?正所谓做的越多错的越多,先动情的总是受伤越深。。。扯远了,其实就是通过一些办法减少服务器能识别到的header参数,在他无法判断的情况下,总不能直接一竿子把你打死吧。这个时候,selenium伴侣就闪亮登场了,pyppeteer-stealth,点到即止,不展开说了,总之,验证失败的问题迎刃而解了。
(2)其次就是智能验证的问题,这个属于简单问题,但是又不简单,因为你永远不知道他会让你如何去验证。最开始的智能验证只是让你点击一下按钮,对于熟谙selenium的你来说会忍不住吐槽一句“你特么是不是在演我?”,然后当你单次运行超过50次问卷后,验证方式就变了,变成了拖动滑块,这些都不算难点,通过定位和操作,很快就能解决“眼前”的问题,一种寂寞如雪的空虚会随后而来,大概在150次的重复运行后,你会接到“error:s95ZY3”的通知,盲猜是服务器拒绝了你的ip访问,那么就是第三个问题了。
(3)建立ip池,完。
后记:问卷星并没有对ip地址进行封杀,大概是它也知道有时需要把纸质文档重新录入进去,如果封杀ip的话会导致不少的误判,所以填写的时候大可以放心的去试错。问卷星的使用场景越来越频繁,进而升级反爬系统也算是历史的进程,不过要是能将数据整理和分析的模块独立出来,进而向在线办公领域不断深入,说不定会有更好的发展。