爬虫:selenium模拟登录12306

from selenium import webdriver
import requests
from lxml import etree
from time import sleep
from selenium.webdriver.chrome.options import Options
from selenium.webdriver import ChromeOptions


def detect_selenium(browser):
    # 如果window.navigator.webdriver返回True则说明服务器端检测到了是selenium在进行自动化操作,若是False则未检测到
    jsCode = 'return window.navigator.webdriver'
    if browser.execute_script(jsCode) == True:
        print('服务器端检测到selenium!')
    else:
        print('服务器端未检测到selenium!')


# 进行selenium规避检测
option = ChromeOptions()
option.add_argument('--disable-blink-features=AutomationControlled')
option.add_experimental_option('excludeSwitches', ['enable-automation'])

bro = webdriver.Chrome(executable_path='./chromedriver_100.exe',options=option)
bro.maximize_window()
bro.get('https://kyfw.12306.cn/otn/resources/login.html')
detect_selenium(bro)

sleep(1)
username_tag = bro.find_element_by_id('J-userName')
password_tag = bro.find_element_by_id('J-password')

username_tag.send_keys('xxx')
sleep(1)
password_tag.send_keys('xxx')
sleep(1)

btn = bro.find_element_by_id('J-login')
btn.click()
sleep(1)
detect_selenium(bro)

# 找到滑块
spawn = bro.find_element_by_id('nc_1_n1z')
# 动作链拖动滑块
action = webdriver.ActionChains(bro)
action.click_and_hold(spawn)
action.move_by_offset(300,0).perform()
action.release()
detect_selenium(bro)
sleep(3)

btn2 = bro.find_element_by_class_name('ok')
btn2.click()
sleep(5)

bro.quit()


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值