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()
爬虫:selenium模拟登录12306
最新推荐文章于 2024-01-15 20:15:00 发布