模拟登录qq空间:有iframe、无验证码
"""
selenium模拟登录QQ空间:有iframe、无验证码
"""
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
if __name__ == '__main__':
u = '你的账户'
p = '你的密码'
# 实例化谷歌浏览器对象
service = Service('./chromedriver')
bro = webdriver.Chrome(service=service)
# 请求页面
url = 'https://qzone.qq.com'
bro.get(url=url)
# 定位到登录的iframe
bro.switch_to.frame('login_frame')
# 使用动作链:from selenium.webdriver import ActionChains
# 实例化动作链对象
action = ActionChains(bro)
# 找到并点击账号密码登录
change_plogin = bro.find_element(by=By.XPATH, value='//a[@id="switcher_plogin"]')
action.click(change_plogin).perform()
# 找到账号框
user_input = bro.find_element(by=By.XPATH, value='//input[@id="u"]')
user_input.send_keys(u)
# 找到密码框
pwd_input = bro.find_element(by=By.XPATH, value='//input[@id="p"]')
pwd_input.send_keys(p)
# 找到登录按钮
login_button = bro.find_element(by=By.XPATH, value='//input[@id="login_button"]')
# 点击登录按钮
action.click(login_button).perform()
# 释放动作链
action.release().perform()
# 关闭浏览器对象
# bro.quit()
模拟登录12306:无iframe、有滑动验证码、有特征识别
"""
模拟登录12306:无iframe,滑动验证码,检测selenium
"""
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver import ChromeOptions # 实现规避检测风险
if __name__ == '__main__':
# 你的用户名密码
username = '你的账户'
password = '你的密码'
service = Service('./chromedriver')
chrome_options = ChromeOptions()
# 规避检测
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
# 实例化浏览器
bro = webdriver.Chrome(service=service,options=chrome_options)
# 指定url
url = 'https://kyfw.12306.cn/otn/resources/login.html'
bro.get(url=url)
# 找到用户框
user_input = bro.find_element(by=By.XPATH, value='//input[@id="J-userName"]')
# 传入你的用户名
user_input.send_keys(username)
# 找到密码框
pwd_input = bro.find_element(by=By.XPATH, value='//input[@id="J-password"]')
# 传入你的密码
pwd_input.send_keys(password)
# 找到登录按钮/链接
a_login = bro.find_element(by=By.XPATH, value='//a[@id="J-login"]')
# 点击 a_login.click()
a_login.click()
# 使用动作链:from selenium.webdriver import ActionChains
# 实例化动作链对象
action = ActionChains(bro)
# 等待两秒,不然会找不到滑块
time.sleep(2)
# 解决特征识别
script = 'Object.defineProperty(navigator, "webdriver", {get: () => false,});'
bro.execute_script(script)
# 这时候会出现一个滑动验证码
slid_span = bro.find_element(by=By.ID, value='nc_1_n1z')
# 按住并滑动340px
action.click_and_hold(slid_span).perform()
for i in range(10):
action.move_by_offset(34, 0).perform()
time.sleep(0.2)
action.release().perform()
# bro.quit()