S++

千线一眼

导航

< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

统计

python爬虫-selenium模拟登录

模拟登录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()

posted on   S++  阅读(780)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示