有些大厂,像BAT可能对爬虫这类检测做的很厉害,为了模拟人为操作,需要让脚步运行的慢一些。
以下python代码用于登录支付宝账号,为了更像真人操作,
- 录入账号密码时,每次录入一个字符都暂停若干时间;
- 且暂停时间是随机时间,不固定;
- 同时也在一些按钮上悬停若干时间后再执行点击事件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
import random import time from selenium import webdriver from selenium.webdriver import ActionChains url = "https://auth.alipay.com/login/index.htm" name = "你的支付宝账号" password = "支付宝登录密码" # 缓慢输入内容 def send_keys_delay_random(controller, keys, min_delay=0.5, max_delay=1.5): for key in keys: controller.send_keys(key) time.sleep(random.uniform(min_delay, max_delay)) # 延迟随机时间 def delay_time(min_delay=0.5, max_delay=1): time.sleep(random.uniform(min_delay, max_delay)) print("启动浏览器,打开页面") driver = webdriver.Chrome() driver.get(url) delay_time() print("选择账号密码登录") chose_btn = driver.find_element_by_xpath('//*[@id="J-loginMethod-tabs"]/li[2]') ActionChains(driver).move_to_element(chose_btn).click().perform() delay_time() print("输入账号") username_input = driver.find_element_by_id("J-input-user") username_input.clear() send_keys_delay_random(username_input, name) delay_time(1, 2) print("输入密码") password_input = driver.find_element_by_id("password_rsainput") password_input.clear() send_keys_delay_random(password_input, password) delay_time() print("点击登录") btn_login = driver.find_element_by_id("J-login-btn") ActionChains(driver).move_to_element(btn_login).click().perform() driver.quit() print("正常退出") |