处理滑动模块,模拟人机验证
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from time import sleep
from selenium.webdriver import ActionChains
from mitmproxy import ctx
class che_login:
def response(flow):
if '/uab/122.' in flow.request.url:
for webdriver_key in ['webdriver', '__driver_evaluate', '__webdriver_evaluate', '__selenium_evaluate',
'__fxdriver_evaluate', '__driver_unwrapped', '__webdriver_unwrapped',
'__selenium_unwrapped', '__fxdriver_unwrapped', '_Selenium_IDE_Recorder', '_selenium',
'calledSelenium', '_WEBDRIVER_ELEM_CACHE', 'ChromeDriverw', 'driver-evaluate',
'webdriver-evaluate', 'selenium-evaluate', 'webdriverCommand',
'webdriver-evaluate-response', '__webdriverFunc', '__webdriver_script_fn',
'__$webdriverAsyncExecutor', '__lastWatirAlert', '__lastWatirConfirm',
'__lastWatirPrompt', '$chrome_asyncScriptInfo', '$cdc_asdjflasutopfhvcZLmcfl_','driver']:
ctx.log.info('Remove "{}" from {}.'.format(
webdriver_key, flow.request.url
))
flow.response.text = flow.response.text.replace('"{}"'.format(webdriver_key), '"NO-SUCH-ATTR"')
flow.response.text = flow.response.text.replace('t.webdriver', 'false')
flow.response.text = flow.response.text.replace('ChromeDriver', '')
print(response,11111111)
def __init__(self,url):
self.url = 'http://didi.360che.com/captcha/test'
self.browser = webdriver.Chrome()
self.wait = WebDriverWait(self.browser, 1)
def login(self):
self.browser.get(self.url)
sleep(1)
self.browser.find_element_by_xpath('//*[@id="age"]').click()
sleep(1)
self.browser.find_element_by_xpath('//*[@id="userName"]').click()
sleep(1)
self.browser.find_element_by_name('userName').send_keys('模拟登陆跳过滑块')
sleep(2)
self.browser.find_element_by_name('age').send_keys('28')
sleep(1)
button = self.browser.find_element_by_id('nc_1_n1z')
action = ActionChains(self.browser)
action.click_and_hold(button).perform()
action.reset_actions()
def get_track(distance):
track = []
current = 0
mid = distance * 3 / 4
t = 0.2
v = 0
while current < distance:
if current < mid:
a = 2
else:
a = -3
v0 = v
v = v0 + a * t
move = v0 * t + 1 / 2 * a * t * t
current += move
track.append(round(move))
return track
track = get_track(distance)
for i in track:
action.move_by_offset(xoffset=i, yoffset=0).perform()
action.reset_actions()
sleep(0.5)
action.release().perform()
sleep(3)
action.move_by_offset(300, 0).perform()
sleep(2)
self.browser.find_element_by_xpath('//*[@id="subDemo"]').click()
sleep(2)
url = 'http://didi.360che.com/captcha/test'
a = che_login(url)
a.login()