アリ系純スライダ検証コード解読構想
本文は経験交流を目的としており、利益を侵害した場合は、削除に連絡してください.
2020.04.13
古来よりコメントエリアに大神が出てきて、私もしばらくスライダをやっていません.次の例はまだ使えるかどうか分かりませんが、熱心なネットユーザーが書いた解決策をお勧めします.
Seleniumリバース-スライダ検証
2019.09.10
次の例はアリのヒューマンマシン認証に変更されましたが、実はseleniumでブラウザを起動した後もpynputでマウスを操作してシミュレーション操作を完了し、send_を単純に呼び出すことができます.keys()もclick()も認識されます.Webdriverパラメータが多すぎて、puppeteerを考慮して実現することに興味があります.
アリ系スライダ検証コードnc_1の先頭で、XXXncを呼び出す.jsが実現します.
例として、視覚中国の登録ページwww.vcg.com/login
このような検証コードに対してJS解読を行うのは難しいのでseleniumで解読すべきである.
解読中にサイトで認識されることがあります.一般的にはsend_です.keysの後ろをドラッグしてログインをクリックしますが、これはほとんどだめで、アリのjsが認識していることが多いです.
たいていは次のようになります.
ブラウザ最大化時に認識
スライドを実行するアクションが認識されます
send_keys後に認識される
処理ロジックは次のとおりです.
ブラウザを開いたら、最大化してget(url)してページをリフレッシュします.
スライドスライダはwebdriverを利用できず、pynputというモジュールを利用してドラッグ操作を行います.このライブラリは比較的下位層で、win 32を呼び出します.前にpyautoguiを使ってダメだと気づき、何度もカプセル化されたと推定され、認識されました
send_keysはスライダをドラッグした後、認識されないはずです.
2020.04.13
古来よりコメントエリアに大神が出てきて、私もしばらくスライダをやっていません.次の例はまだ使えるかどうか分かりませんが、熱心なネットユーザーが書いた解決策をお勧めします.
Seleniumリバース-スライダ検証
2019.09.10
次の例はアリのヒューマンマシン認証に変更されましたが、実はseleniumでブラウザを起動した後もpynputでマウスを操作してシミュレーション操作を完了し、send_を単純に呼び出すことができます.keys()もclick()も認識されます.Webdriverパラメータが多すぎて、puppeteerを考慮して実現することに興味があります.
アリ系スライダ検証コードnc_1の先頭で、XXXncを呼び出す.jsが実現します.
例として、視覚中国の登録ページwww.vcg.com/login
このような検証コードに対してJS解読を行うのは難しいのでseleniumで解読すべきである.
解読中にサイトで認識されることがあります.一般的にはsend_です.keysの後ろをドラッグしてログインをクリックしますが、これはほとんどだめで、アリのjsが認識していることが多いです.
たいていは次のようになります.
ブラウザ最大化時に認識
スライドを実行するアクションが認識されます
send_keys後に認識される
処理ロジックは次のとおりです.
ブラウザを開いたら、最大化してget(url)してページをリフレッシュします.
スライドスライダはwebdriverを利用できず、pynputというモジュールを利用してドラッグ操作を行います.このライブラリは比較的下位層で、win 32を呼び出します.前にpyautoguiを使ってダメだと気づき、何度もカプセル化されたと推定され、認識されました
from pynput.mouse import Button, Controller as c1
send_keysはスライダをドラッグした後、認識されないはずです.
import json
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from pynput.keyboard import Key, Controller as c2
from pynput.mouse import Button, Controller as c1
class vcg_get_cookies():
mouse = c1()
url = 'https://www.vcg.com/login'
options = webdriver.ChromeOptions()
# ,
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})
# , , Selenium
options.add_experimental_option('excludeSwitches', ['enable-automation'])
#
# options.add_argument("--proxy--server=127.0.0.1:8080")
# UA
ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
options.add_argument('user-agent=' + ua)
driver = webdriver.Chrome(executable_path="D:\chromedriver.exe", options=options)
driver.maximize_window()
wait = WebDriverWait(driver, 10)
driver.get(url)
time.sleep(3)
driver.refresh()
while True:
# pyautogui.press('f5')
# keyboard.press(Key.f5)
driver.refresh()
time.sleep(3)
mouse.position = (1562, 355)
mouse.press(Button.left)
mouse.move(1890, 358)
mouse.release(Button.left)
time.sleep(3)
WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.CLASS_NAME, 'nc-lang-cnt')))
if driver.find_element_by_class_name('nc-lang-cnt').text == ' ':
break
time.sleep(2)
driver.find_element_by_name('id').send_keys(' ')
time.sleep(2)
driver.find_element_by_name('password').send_keys(' ')
driver.find_element_by_class_name('sign-in-form__btn').click()
time.sleep(5)
user_name = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'userInfo')))
print(user_name)
cookies = driver.get_cookies() # Selenium get_cookies cookies
driver.close() # cookies
# cookies, cookies
# cookies , login cookies
jsonCookies = json.dumps(cookies) # json cookies
with open('vcgCookies.json', 'w') as f:
f.write(jsonCookies)
print(cookies)