Selenium模拟淘宝登陆的一次尝试
**最近在学习爬虫,今天看实战是要爬取淘宝的一些信息,老师讲的挺好,自己来就死到这个登陆了,所以尝试写了一个模拟登陆,还望大佬指正**```
# -*- coding: utf-8 -*-
"""
@Time : 2021/1/25 19:28
@Auth : Ne-21
@file :taobao_login.py
@IDE :PyCharm
@Motto:Another me.
"""
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ActionChains
import time
options = webdriver.ChromeOptions()
browser = webdriver.Chrome(options=options)
# 防止被监测
browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": '''
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
'''
})
wait = WebDriverWait(browser, 5)
def do_slider():
"""
处理滑动验证码
:return:
"""
slider_go = wait.until(
EC.presence_of_element_located((By.CSS_SELECTOR, '#nc_1_n1z'))
)
# 实例化一个动作链关联游览器
action = ActionChains(browser)
action.reset_actions()
# 使用鼠标动作链进行点击并悬浮
action.click_and_hold(slider_go)
# 滑动验证码
action.move_by_offset(xoffset=258, yoffset=0).perform()
time.sleep(1)
def login(username, password):
browser.get('https://login.taobao.com/member/login.jhtml')
input_username = wait.until(
EC.presence_of_element_located((By.CSS_SELECTOR, '#fm-login-id'))
)
input_password = wait.until(
EC.presence_of_element_located((By.CSS_SELECTOR, '#fm-login-password'))
)
submit = wait.until(
EC.element_to_be_clickable((By.CSS_SELECTOR, '#login-form > div.fm-btn > button'))
)
input_username.send_keys(username)
time.sleep(2)
input_password.send_keys(password)
time.sleep(2)
submit.click()
time.sleep(3)# 等待检验滑块
# 判断有无滑块验证
try:
slider = wait.until(
EC.presence_of_element_located((By.CSS_SELECTOR, '#nc_1__scale_text > span'))
)
if bool(slider):
print('发现滑块验证码')
time.sleep(2)
do_slider()
submit.click()
else:
print('未发现滑块')
pass
except:
print('未发现滑块')
finally:
print('登录成功')
def main():
login(username='', password='')
if __name__ == '__main__':
main()
``` Traceback (most recent call last):
File "C:\Users\zp\Desktop\myPython\taobao\login.py", line 63, in login
do_slider()
File "C:\Users\zp\Desktop\myPython\taobao\login.py", line 34, in do_slider
action.move_by_offset(xoffset=258, yoffset=0).perform()
File "C:\Program Files\Python38\lib\site-packages\selenium\webdriver\common\action_chains.py", line 80, in perform
self.w3c_actions.perform()
File "C:\Program Files\Python38\lib\site-packages\selenium\webdriver\common\actions\action_builder.py", line 76, in perform
self.driver.execute(Command.W3C_ACTIONS, enc)
File "C:\Program Files\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Program Files\Python38\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.JavascriptException: Message: javascript error: Failed to execute 'elementsFromPoint' on 'Document': The provided double value is non-finite.
(Session info: chrome=88.0.4324.150)
没懒用。并且手动滑过去仍然被检测到了,无法登录 ?淘宝吗,我做数据可视化刚写了淘宝的爬虫。
我直接做了扫码登陆,没写登陆的滑块验证,但是爬虫的时候 会出来滑块验证
用ActionChains和move_by_offset,
过不了那个验证,
我试了 把x坐标i直接放到for循环了 和 用模拟减速的方法
都不行,
楼主如果有什么好办法了,记得@我一下,感谢。{:1_893:} 学习咯,感谢分享 苏晓宇c 发表于 2021-1-25 22:08
?淘宝吗,我做数据可视化刚写了淘宝的爬虫。
我直接做了扫码登陆,没写登陆的滑块验证,但是爬虫的时 ...
是不是说操作太频繁,叫你休息一下的 苏晓宇c 发表于 2021-1-25 22:08
?淘宝吗,我做数据可视化刚写了淘宝的爬虫。
我直接做了扫码登陆,没写登陆的滑块验证,但是爬虫的时 ...
这种是没办法的,操作频繁了,硬要你隔15分钟。手动操作一样。只要给识别为恶意访问。 selenium的内核被检测了 chromedriver也一样 需要修改
super谦 发表于 2021-1-26 08:32
是不是说操作太频繁,叫你休息一下的
不是,就是验证码拦截 hyzhangyong 发表于 2021-1-26 09:19
这种是没办法的,操作频繁了,硬要你隔15分钟。手动操作一样。只要给识别为恶意访问。
我到没有硬隔15分钟,只是出一个滑块验证,用selenium过不去,只能手动滑块,过去了就可以正常浏览。
千年恨 发表于 2021-1-26 09:22
selenium的内核被检测了 chromedriver也一样 需要修改
对的,楼主给那个代码,上来加一个JS劫持,其实过不了淘宝对selenium和Chromedrive的检测。
我现在的替代方案是用Firefox驱动,这个可以过滑块。 苏晓宇c 发表于 2021-1-26 11:33
对的,楼主给那个代码,上来加一个JS劫持,其实过不了淘宝对selenium和Chromedrive的检测。
我现在的 ...
其实自己在chromedrive正常登陆下就不会有滑块和短信了
页:
[1]
2