selenium 파충류 의 타 오 바 오 슬라이더 인증 기능 건 너 뛰 기 실현 코드
chorme 를 최신 버 전 84 로 업데이트 하고 해당 하 는 chorme 드라이버 링크 를 다운로드 해 야 합 니 다.http://chromedriver.storage.googleapis.com/index.html
포인트 잘 찍 어!!내 가 쓰 는 83 의 chorme 은 안 되 니까..................................................................
문제.
1.일주일 전 까지 만 해도 제 슬라이더 인증 코드 는 괜 찮 았 습 니 다.전혀 문제 없습니다!코드 low
url = "https://login.taobao.com/member/login.jhtml"
browser.get(url)
browser.maximize_window() #
#
user = '*****'
password = '*******'
time.sleep(8)
iframe = browser.find_element_by_xpath('//div[@class="bokmXvaDlH"]//iframe')
print(iframe)
browser.switch_to.frame(iframe)
browser.find_element_by_xpath('//*[@id="fm-login-id"]').send_keys(id)
browser.find_element_by_xpath('//*[@id="fm-login-password"]').send_keys(password)
time.sleep(2)
#
span_background = browser.find_element_by_xpath('//*[@id="nc_1__scale_text"]/span')
span_background_size = span_background.size
print(span_background_size)
#
button = browser.find_element_by_xpath('//*[@id="nc_1_n1z"]')
button_location = button.location
print(button_location)
# :drag_and_drop_by_offset
# , ( x , ,y )
x_location = span_background_size["width"]
y_location = button_location["y"]
print(x_location, y_location)
action = ActionChains(browser)
source = browser.find_element_by_xpath('//*[@id="nc_1_n1z"]')
action.click_and_hold(source).perform()
action.move_by_offset(300, 0)
action.release().perform()
time.sleep(1)
#
browser.find_element_by_xpath('//*[@id="login-form"]/div[4]/button').click()
print('
')
타 오 바 오 에 잘 들 어 갈 수 있어 서 여 유 롭 습 니 다.2.타 오 바 오 아버 지 는 일주일 후에 저 에 게 찬물 을 끼 얹 어 주 셨 고 자신의 반 파충류 체 제 를 추 가 했 습 니 다.다음 과 같은 오류 가 발생 했 습 니 다.
처음에 나 는 내 가 자주 로그 인 하 는 줄 알 았 는데 타 오 바 오의 로봇 이 나 를 코드 로 인식 하고 들 어 왔 다.보통 30 분 안에 해 제 됩 니 다.결국 하루 뒤에 도 이 문제 가 있 었 다.자 료 를 찾 아 보 니 해바라기 보전 을 뒤 져 보 니 해결 방법 이 없 었 다.나중에 한 글 을 보 았 는데 타 오 바 오 가 셀 레 니 움 에 대한 자신의 검증 을 다시 갱신 해서 나 는 그물 에서 빠 진 물고기 가 되 지 않 았 을 것 이다.아이고,나 로 하여 금 3 일 동안 해결 하지 못 하 게 했다.이제 제 구덩이 와 해결 방법 을 여러분 께 나 눠 드 리 겠 습 니 다.성공 적 으로 다시 그물 에서 빠 진 물고기 가 되 었 다.하하 하!
순서
1.먼저 JS 를 잘 아 는 많은 사람들 이 타 오 바 오 가 window.navigator.webdriver(js 검 측 특징 중 하나)를 검 측 할 것 이라는 것 을 알 고 있 지만'undefined'를 설정 하 더 라 도 실패 하 는 것 을 보 세 요.
2.이 럴 때 세심 한 것 은 그의 전체적인 JS 를 살 펴 봐 야 한다.(이것 은 내 가 다른 사람의 생각 을 참고 하 는 것 이다)타 오 바 오 아빠 가 브 라 우 저 에 내 장 된 JS 에 이런 무 서운 코드 가 있다 는 것 을 알 게 될 것 이다.
바로 이 노란색 이 표 시 된 것 입 니 다.쉽게 발견 되 지 않 을 것 입 니 다.당신 이 selenium 으로 들 어 가 는 것 이 검출 되 었 습 니 다.특별한 구덩이 가 아 닙 니까?그럼 우 리 는 이제 그 를 처치 해 야 한다.
3.이때 자세히 생각해 보 세 요.우 리 는 무엇 을 통 해 브 라 우 저 를 열 었 습 니까?예,아 는 것 은 모두 웹 driver.exe 라 는 구동 이 라 고 말 합 니 다.그럼 우 리 는 그 부터 시작 하 겠 습 니 다.웹 driver.exe 를 열 면 그 중의 문 제 를 발견 할 수 있 습 니 다!
주의:포인트!!!웹 driver.exe 를 어떻게 열 고 수정 합 니까?많은 사람들 이 난 장 판 이 었 습 니 다.전에 윈도 시스템 이 nodepad++로 열 리 는 것 을 보 았 습 니 다.제 가 안 되 는 것 을 주의 하 세 요!한번 해 보 세 요.어떤 사람 은 할 수 있 지만 나의 선생님 컴퓨터 는 안 됩 니 다)그리고 나 서 나 는 방법 을 찾 았 습 니 다.여러분 이 약간의 vim 조작 을 할 줄 알 아야 합 니 다.아주 간단 합 니 다!정확히 말 하면 리 눅 스 가 해결 하 는 것 이다.왜냐하면 그 는 인 코딩 문제 가 존재 하지 않 기 때문에 바보 윈도 처럼 멍청 하지 않 을 것 이다.특히 어리석다!!개발 자 들 은 리 눅 스 시스템 을 사용 하 는 것 이 좋 겠 습 니 다!
내 가 열심히 검색 한 결과,에이,믿 을 만 한 글 을 찾 았 다.하하!외국 의'아 는가'
글 링크:https://stackoverflow.com/questions/33225947/can-a-website-detect-when-you-are-using-selenium-with-chromedriver
바로 그 사람 이다!
바로 이 번역 후의 조작 이다.
포인트 잘 찍 어!!리 눅 스 시스템 의 vim 을 사용 하여 들 어가 면 당신 이 본 것 도 난 장 판 입 니 다!!하하,but 와 윈도 우즈 의 난 장 판 은 다 릅 니 다."$cdc"를 찾 게 해 줄 겁 니 다.asdjflasutopfhvcZLmcfl_”이 문자열 의,신기 하 죠?이것 이 바로 리 눅 스 의 강력 함 이다!!
리 눅 스 명령 을 할 줄 모 르 는 동 화 는 스스로 검색 해 볼 수 있 습 니 다.간단 합 니 다.수정 해서 저장 하 세 요!
4.여기까지 만 하면 된다 고 생각 하 시 나 봐 요.NO NO NO 이렇게 하면 로그 인 이 안 돼 요.마지막 비단 주머니 묘책 이 필요 해!!
구체 적 으로 chorme 개발 자 모드 를 닫 고 자동 테스트 상 태 를 닫 아야 하 며,모두 가 알 고 있 는 window.navigator.webdriver 를'undefined'로 설정 해 야 합 니 다.잘 모 르 겠 지만 그림 이 이해 해 드릴 게 요.
# chrome_options
chrome_options = webdriver.ChromeOptions()
# x,y & x,y
chrome_options.add_argument(f'--window-position={217},{172}')
chrome_options.add_argument(f'--window-size={1200},{1000}')
# // :
# window.navigator.webdriver True, undefined 。
chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])
이 코드 를 추가 하면'자동 테스트 소프트웨어 의 제 어 를 받 고 있 습 니 다'라 는 디 스 플레이 를 닫 습 니 다.
# dev_tool get .webdriver "undefined"
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})""",
})
이 코드 를 추가 하면 개발 자 모드 를 닫 을 수 있 습 니 다.
# dev_tool get .webdriver "undefined"
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})""",
})
마지막 으로 우 리 는 js 를 미리 실행 하 는 방법 을 통 해 window.navigator.webdriver 를"undefined"로 설정 합 니 다!OK !!큰 성 과 를 거두다.이렇게 한 걸음 한 걸음 내 려 오 면,너 는 나의 하늘 에 슬라이더 가 없다 는 것 을 알 게 될 것 이다!개 삼!!
총결산
셀 레 니 엄 파충류 의 타 오 바 오 슬라이더 건 너 뛰 기 검증(2020/8)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 셀 레 니 엄 이 타 오 바 오 슬라이더 검증 내용 을 건 너 뛰 었 습 니 다.우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WDM(WebDriverManager) 시작하기자동화 테스트(브라우저 자동화)에 대해 이야기할 때마다 몇 가지 사항이 있어야 합니다. 브라우저(시스템 경로에 있어야 함). 드라이버 실행 파일(시스템 경로에 있어야 함), 드라이버 실행 파일 버전은 브라우저 버전과...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.