Python Selenium 슬라이더 해독 인증번호 최신 판(GEETEST 95%이상 통과 율)
8000 단어 PythonSelenium슬라이더 인증 코드 해독
파충류 가 있 으 면 자연히 반 파충류 가 있 는데 바이러스 와 백신 소프트웨어 처럼 공격 이 있 으 면 방어 가 있 고 둘 은 서로 발전 을 추진한다.현재 가장 유행 하 는 반 기어 오 르 기 기술 인증 코드 는 파충류 의 자동 등록 을 방지 하기 위해 쓰레기 계 정 을 대량으로 생 성하 고 거의 모든 사이트 의 등록 페이지 에 인증 코드 기술 을 사용한다.그 실험 증 코드 의 영문 은 CAPTCHA(Complete Automated Public Turing test to tell Computers and Humans Apart)로 번역 되 었 으 며,중국어 로 번역 하면 컴퓨터 와 인간 을 자동 으로 구분 하 는 공개 도령 테스트 로 사용자 가 컴퓨터 인지 사람 인지 구분 할 수 있 는 테스트 로 CAPTCHA 테스트 를 통과 할 수만 있다 면 인간 으로 여 겨 질 수 있다.이 를 통 해 슬라이더 인증 코드 를 푸 는 관건 은 컴퓨터 가 사람의 행 위 를 더욱 잘 모 의 하 는 것 임 을 알 수 있다.이것 도 해결 의 난점 이다.
환경 설정
1.설치
selenium 은 python 2.7 과 python 3.5 등 주류 python 버 전 을 지원 합 니 다.설치 가 비교적 간단 하고 네트워크 가 있 는 환경 에서 cmd 입력 을 열 면 자동 으로 설치 할 수 있 습 니 다.
pip install selenium
2.webdriverselenium 설치 가 완료 되면 선택 한 브 라 우 저의 웹 드라이버 를 다운로드 합 니 다.본 고 는 ChromeDriver 를 예 로 들 어 압축 을 풀 고 Python 응용 프로그램의 동급 디 렉 터 리 에.exe 파일 을 넣 어 웹 드라이버 의 경 로 를 시스템 PATH 변수 에 추가 하 는 것 을 확인 하 십시오.또한 크롬 프로그램의 동급 디 렉 터 리 에.exe 파일 을 넣 어야 하 며,다운로드 한 크롬 드라이버 버 전 은 크롬 브 라 우 저 버 전과 대응 해 야 사용 할 수 있 습 니 다ChromeDriver 다운로드 주소
3.관련 라 이브 러 리 와 템 플 릿
#
from PIL import Image
#web
from selenium import webdriver
#
from selenium.webdriver.common.action_chains import ActionChains
#
import time,random
3.해결 절차본 고 는 춘추 홈 페이지 를 예 로 들 면:
4.567917.슬라이더 인증 코드 원 도 를 로 컬 에 저장 합 니 다4.567917.selenium 을 이용 하여 슬라이더 인증 코드 페이지 에 들 어가 필요 한 페이지 그림 을 캡 처 합 니 다4.567917.이미지 픽 셀 비교 분석 을 통 해 결함 위치 와 슬라이더 이동 거 리 를 얻 을 수 있 습 니 다기계 시 뮬 레이 션 인공 미끄럼 궤적4.코드 구현
우선 selenium 을 통 해 웹 페이지 요 소 를 슬라이더 인증 코드 페이지 로 기어 들 어 갑 니 다.
#
driver = webdriver.Chrome()
driver.get('https://account.ch.com/NonRegistrations-Regist')
driver.maximize_window()
#
input1 = driver.find_element_by_name('phoneNumberInput')
#
input1.send_keys(phoneNumber)
time.sleep(0.2)
#
getcheck=driver.find_element_by_id('getDynamicPwd')
#
getcheck.click()
지난주 국내 최대 인증 코드 플랫폼 인'GEETEST'(GEETEST)가 슬라이더 인증 코드 를 업데이트 하면 서 파충류 에 한 걸음 더 나 아 갔다.시 나 닷 컴,버들붕어 등 검증 코드 를 사용 하 는 각 사이트 의 페이지 도 이에 따라 업데이트 되 었 다.물론 춘추 도 예 외 는 아니다.이번 업 데 이 트 는 슬라이더 인증 코드 를 푸 는 관건 적 인 통 증 을 겨냥 한 것 이 분명 하 다.그 전에 클릭 하여 인증 코드 를 얻 었 다.슬라이더 인증 코드 인터페이스 가 나타 나 면 슬라이더 가 바로 나타 나 지 않 습 니 다.이때 화면 을 캡 처 할 수 있 습 니 다.슬라이더 를 클릭 해 야 슬라이더 와 구멍 이 생 깁 니 다.이때 다시 캡 처 를 하면 두 번 캡 처 한 픽 셀 RGB 값 에 따라 하나씩 옮 겨 다 니 며 구멍 위 치 를 찾 을 수 있 습 니 다.그러나 업데이트 후 인증 코드 를 가 져 오 려 면 슬라이더 와 구멍 이 생 길 수 있 습 니 다.그림 1 참조.문제 가 생 겼 습 니 다.지금 은 원 도 를 참고 로 하지 않 았 는데 어떻게 구멍 위 치 를 찾 습 니까?곰 곰 이 생각해 보면 이 문 제 는 어렵 지 않 습 니 다.단지 원 도 를 참고 로 해 야 할 뿐 입 니 다.관찰 을 통 해 각 사이트 의 인증 코드 배경 사진 이 몇 장 에 불과 하 다 는 것 을 알 게 되 었 습 니 다.그러면 우 리 는 인공 슬라이더 를 통 해 퍼 즐 에 성공 한 후에 전체 원 도 를 나타 내 는 순간 에 화면 캡 처 를 하여 원 도 를 하나씩 캡 처 하여 현지 에 저장 하 는 것 을 고려 할 수 있 습 니 다.그 다음 에 부족 한 그림 을 통 해 로 컬 에 저 장 된 원 그림 과 픽 셀 RGB 값 을 일치 시 키 면 원 그림 은 신속하게 원형 을 나타 내지 않 습 니까?부족 한 그림 의 원 구 는 가장 오른쪽 까지 미 끄 러 진 다음 에 캡 처 를 해 야 합 니 다.다음 에 상세 하 게 설명 하 겠 습 니 다.
#
slideblock = driver.find_element_by_class_name('geetest_slider_button')
#
ActionChains(driver).click_and_hold(slideblock).perform()
#
ActionChains(driver).move_by_offset(xoffset=250, yoffset=0).perform()
time.sleep(0.4)
#
driver.save_screenshot('D:\quekou.png')
#
ActionChains(driver).release(slideblock).perform()
#
quekouimg=Image.open('d://quekou.png')
#
sourceimg=match_source(quekouimg)
def match_source(image):
imagea=Image.open('d://source1.png')
imageb=Image.open('d://source2.png')
imagec=Image.open('d://source3.png')
imaged=Image.open('d://source4.png')
list=[imagea,imageb,imagec,imaged]
#
for i in list:
# , 88px,
pixel1=image.getpixel((868,340))
pixel2=i.getpixel((868,428))
#pixel[0] R ,pixel[1] G ,pixel[2] B
if abs(pixel1[0]-pixel2[0])<5:
return i
return image
슬라이더 의 이동 거 리 를 더욱 빠르게 얻 기 위해 서 우 리 는 슬라이더 를 가장 오른쪽 끝까지 미 끄 러 뜨 린 다음 에 캡 처 하 는 것 을 고려 할 수 있 습 니 다.왼쪽 에서 오른쪽으로 비교 하여 옮 겨 다 니 는 방식 을 사용 하기 때문에 이런 방식 으로 처음으로 얻 은 것 이 바로 부족 한 위 치 를 확보 할 수 있 습 니 다.슬라이더 의 출발점 이 같 기 때문에 이 방법 은 슬라이더 의 크기 를 계산 하 는 단 계 를 줄 일 수 있 습 니 다.(슬라이더 의 크기 계산 도 픽 셀 을 통 해 옮 겨 다 니 는 것 이기 때 문 입 니 다.다시 계산 할 필요 가 없다.
#
visualstack=get_diff_location(sourceimg,quekouimg)
# loc,827
loc=visualstack-827
#
def get_diff_location(image1,image2):
#(825,1082)(335,463) ,
for i in range(825,1082):
for j in range(335,463):
#
if is_similar(image1,image2,i,j)==False:
return i
return -1
# RGB
def is_similar(image1,image2,x,y):
pixel1=image1.getpixel((x, y+88))
pixel2=image2.getpixel((x, y))
# ,50
if abs(pixel1[0]-pixel2[0])>=50 and abs(pixel1[1]-pixel2[1])>=50 and abs(pixel1[2]-pixel2[2])>=50:
return False
return True
그 다음 에 슬라이더 인증 코드 를 푸 는 가장 관건 적 이 고 가장 어 려 운 단계 가 왔 습 니 다.기 계 는 인공 미끄럼 궤적 을 모 의 했 습 니 다.구멍 위치 까지 정확하게 미 끄 러 질 수 있 지만 기계 가 괴물 에 게 퍼 즐 을 먹 힌 것 으로 인식 되 었 습 니 다.본인 은 테스트 할 때 도 슬 픈 눈물 을 흘 렸 습 니 다.마지막 으로 계속 디 버 깅 을 통 해 학습 을 통 해 통과 율 이 OK 인 미끄럼 궤적 알고리즘 을 얻 었 습 니 다.즉,물리 가속도 변위 와 관련 된 공식 을 사용 하여 먼저 빠 르 고 느 린 인공 미끄럼 규칙 에 따라 궤적 을 계산 하 는 동시에 아 날로 그 사람의 미끄럼 이 구멍 위 치 를 초과 한 다음 에 구멍 으로 미 끄 러 지 는 상황 을 이용 하여 궤적 을 인공 미끄럼 궤적 에 더욱 적합 하 게 한다.프로젝트 시간 이 제한 되 어 있 기 때문에 저 는 연 구 를 많이 하지 않 았 습 니 다.99%의 통과 율 을 얻 으 려 면 기계 학습 을 시도 하고 인공 미끄럼 궤적 을 채집 하여 곡선 적합 방법 으로 궤적 을 얻 을 수 있 습 니 다.
#
def get_track(self,distance):
track=[]
current=0
mid=distance*3/4
t=random.randint(2,3)/10
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
# , 3
track_list=get_track(loc+3)
time.sleep(2)
ActionChains(driver).click_and_hold(slideblock).perform()
time.sleep(0.2)
#
for track in track_list:
ActionChains(driver).move_by_offset(xoffset=track,yoffset=0).perform()
# , , ,
imitate=ActionChains(driver).move_by_offset(xoffset=-1, yoffset=0)
time.sleep(0.015)
imitate.perform()
time.sleep(random.randint(6,10)/10)
imitate.perform()
time.sleep(0.04)
imitate.perform()
time.sleep(0.012)
imitate.perform()
time.sleep(0.019)
imitate.perform()
time.sleep(0.033)
ActionChains(driver).move_by_offset(xoffset=1, yoffset=0).perform()
#
ActionChains(driver).pause(random.randint(6,14)/10).release(slideblock).perform()
time.sleep(2)
# quit() close() ,
driver.close()
이로써 소 백 분해 슬라이더 인증 코드 는 기본적으로 끝 났 더 라 도 전체 절 차 는 매우 간단 해 보이 지만 그 중의 구 덩이 는 아마 실천 만 이 알 수 있 을 것 입 니 다.BUG 가 나 온 후에 첫 번 째 일 은 당신 의 코드 를 진지 하 게 검사 하 세 요.그 어떠한 곳 도 놓 치지 마 세 요.파라미터,범위,반환 값,수치 등 심지어 당신 이 가장 문제 가 없다 고 생각 하 는 곳 일 수도 있 습 니 다.종종 문제파 이 썬 셀 레 니 엄 이 슬라이더 인증 코드 를 해독 하 는 최신 판(GEETEST 95%이상 통과 율)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 셀 레 니 엄 이 슬라이더 인증 코드 를 해독 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.