Taobao_order_robot
Taobao_order_robot copied to clipboard
拖动条刷新后,报错
Hi,最近我有个项目也是需要登录淘宝。拖动滑块一直验证失败(拖动动作进行了),点击刷新滑块之后, selenium报错 either the element is no longer attached to the DOM, it is not in the current frame context, or the document has been refreshed
难道只有重新刷新页面了么?我的微信是TQ_LAOLIU,希望一起探讨
找到问题了,要把action = ActionChains(driver)写到循环里面,等于是重新加载变化后的页面。但是新问题来了,无论尝试多少次都报失败,还在测试淘宝的验证机制。感觉是探测了鼠标移动,鼠标点击,其实还有键盘输入记录,鼠标移动的记录、点击的记录等等的信息 for i in range(5): print(i) action = ActionChains(driver) slide_span = driver.find_element_by_id("nc_1_n1z") # 取得滑块span action.click_and_hold(slide_span) # 鼠标左键按住span action.move_by_offset(258, 0) # 向右拖动258像素完成验证 action.perform() time.sleep(1) action.reset_actions() # 页面进行了刷新,需要清除action之前存储的elements try: slide_refresh = driver.find_element_by_xpath( "//div[@id='nocaptcha']/div/span/a") # 页面没有滑块,而是“点击刷新再来一次” slide_refresh.click() except exceptions.NoSuchElementException: # 滑动成功 break
em……,淘宝登录,我也是在这儿一直有这么一个问题,现在还没有弄明白为什么“点击刷新再来一次”后仍然一直会失败。
我感觉是不是还需要添加一些操作过程中的操作:比如鼠标拖动的时候会上下抖动,等等。我尝试了很多次这个代码,只有某一次是完完全全登录成功的,但是之后的都会存在滑块不能通过问题,我的环境是:ubuntu 16.04 / firefox 驱动:geckodriver-v0.19.1-linux64.tar.gz / selenium 3.9.0 / 火狐浏览器的版本是58 。博主在Windows下是正常运行的嘛?
++ 在博主的readme中看到这几句: 1.Selenium开启浏览器【火狐浏览器驱动】 2.进行登录【淘宝登录页面】 3.滑块验证(chorme滑块验证会失败)【若需要验证】 第一步说是启动火狐浏览器,后面又提到了chorme滑块验证会失败,但是我试了两者都是一样的问题,都是会拖动失败。
我尝试过多种方式,比如分两段拖动(随机一点),以免拖动太快失败 xoffset=150+random.randint(1,30) print(xoffset) action.move_by_offset(xoffset,0).perform() #平行移动鼠标 time.sleep(1); xoffset=150+random.randint(1,30) print(xoffset)
也尝试过拖动时候Y轴上下随机5个单位
还是不行,只是输入密码之前晃动鼠标会减少拖动条出现的概率
回复楼上的朋友,我这里的情况是:即便是没触发验证码,可以直接点击登录,但大部分时候也会触发验证码并且重新输入密码,之后又回到了滑块验证的步骤,看了下滑块验证时的网络请求大概还找到下面的信息
在拖动完成之后其访问的是这个网址 https://cf.aliyun.com/nocaptcha/analyze.jsonp?a=CF_APP_TBLogin_PC&t=1a421d5c6e1153ff296bef5d3e11c0a31db8ef14&n=106
其成功的返回值是这样: {"result":{"csessionid":"","code":0,"value":""},"success":true} 失败的返回值是这样: {"result":{"csessionid":"","code":300,"value":"block"},"success":true}
能否对这个value:block进行什么样的判断呢?
++ 继续查了一些资料,貌似和极验的拖动验证类似,需要生成一副轨迹图,这个轨迹图要和人的操作相似才有可能通过 上面的网址可能只是验证拖动的操作轨迹,然后返回的判断后的结果
实在不行,考虑试试AutoIt3呢
AutoIt3模拟鼠标拖拽示例: MouseClickDrag(‘left’, 40, 30, 600, 30) //按住左键将40,30位置的图标拖动到600,30处 详见:http://blog.csdn.net/langyu1021/article/details/73731385
我也还没尝试过行不行哈,;
滑动验证这个问题有人成功的嘛? 我在想用weibo登陆
有人解决了出现滑块的问题吗,我用selenium+chrome/firefox都试了,每次都会出现滑块,然后手动拖滑块也是验证失败,知乎有人给了解决方案,但是我这边也还是会出现滑块失败。。
在淘宝登录时,加入随机点击操作,改善“淘宝判断为机器人登录而出现滑块验证”这一情况,但是情况仍然不能完全避免。目前较好的办法是:手动在本机多登录几次淘宝,让淘宝后面不再判定该IP为机器人,一般该办法可以一劳永逸!
为什么我用pupeeteer只打开页面后,手动验证登录也不通过,用自己的浏览器打开手动验证登录就可以,有跟我一样的嘛?
现在婉转地修改成了:”每次登录时手动滑块验证,程序再继续运行处理“ 这么一个逻辑了,,
selenium下面手动滑块验证都不行,报错这样的错误,有解决办法吗?
也出现跟楼上一样的情况,只要是selenium打开的浏览器,直接就通不过
我也有这个问题,然后分别试了微博、支付宝、截图扫二维码登录。远程服务器没有浏览器界面,跑项目还是截图扫二维码登录方便。其它的登录方式都需要输入手机验证码。
我也遇到了这个问题 试过了win10 +selenium(3.14.0) + IE(11.285) 不会出错,但是我不能拖动滑块,我使用pyautogui win32api 都不能拖动滑块. 使用autoit3 昨天还可以,今天 只能拖动到一半的位置...
到达滑块验证的那一步的时候 自己手动打开的chrome,手动验证可以通过 chromedriver打开的chrome,即便是手动验证也通不过 所以问题其实根本就不在模拟滑块滑动上
对,只要检测到是机器打开的就会被屏蔽
告诉你为啥,因为使用了webdriver的话navigator.webdriver会返回true;且,驱动里有个特征也需要屏蔽掉;这些都不是事,重点是它会检测过程、环境。。。
我也碰到一样的问题,添加了“手抖”还有“位移速度”这些都跑不过。问题应该是自动检测到了这个selenium的东西了。 然后我搞了个偷懒的方式...用add_argument(user-info)这种方式,只要你之前用chrome登录过淘宝,就可以实现自动登录...然后就没有验证码了。
但是如果你测试过多的话,会在爬虫的中途又出现滑动验证码.....
之前在stackoverflow问过这种问题,也是没答复...
诸位大神,这个问题有解决吗?之前拖滑块多刷机器还能出验证码,今天突然再也不出现了,完全登陆不了了。。。。。。尴尬啊,求大神赐教。。。
诸位大神,这个问题有解决吗?之前拖滑块多刷机器还能出验证码,今天突然再也不出现了,完全登陆不了了。。。。。。尴尬啊,求大神赐教。。。
你这该不会封ip或者账号了吧
改chromedriver的全量标识 就不会失败
改chromedriver的全量标识 就不会失败
可以详细说说怎么做吗
@Joannxxxxx https://blog.csdn.net/qq_34268952/article/details/105081205
@Joannxxxxx https://blog.csdn.net/qq_34268952/article/details/105081205
chromedriver.exe 打开是乱码,怎么查看源码?