python 은 금 산 어패 의 번역 기능 을 사용 합 니 다(디 버 깅 도구 정지점 사용)
ICIBA 전송 문
열 면 인터페이스 가 이 렇 습 니까?아니면 비교적 깨끗 합 니까?
F12 를 누 르 면 디 버 깅 도 구 를 열 고 Network 를 선택 하여 XHR 를 찾 습 니 다.
여기 가 바로 네트워크 전송 내용 을 보 는 것 이다.XHR 는 페이지 를 새로 고치 지 않 는 네트워크 전송 입 니 다.흔히 말 하 는 ajax(아 자 크 스,그리스 신화 에 나 오 는 이름 처럼...)입 니 다.
그런 후에 우 리 는 번역 창 에 내용 을 좀 쓰 고 번역 을 눌 렀 다.
보 세 요.왼쪽 페이지 에 번역 결과 가 나 왔 고 오른쪽 디 버 깅 창 에 두 개의 데이터 전송 이 나 왔 습 니 다.
두 마리?그럼 어떤 걸 로 할 까요?눌 러 봐...
어 머,세상 에.둘 다 똑 같 아 요.그럼 아무 거나 고 르 면 돼 요.
눌 러 봐,뒤에 내용 봐.
자,우선 Request URL 을 보 았 습 니 다.음...바로 우리 가 원 하 는 URL 입 니 다.
일단 적어 두 고...
(복사,붙 여 넣 기,키보드 로 치 시 겠 습 니까?공책 에 베 낀 것 인가?)
아래 포스트 도 기억 하 세 요.요청 유형 입 니 다.get 으로 사용 하지 마 세 요.
더 내 려 가면,
위 에 부분 잘 아 시 죠?참,URL 링크 에 있 는 물건 이에 요.그 를 막론하고 URL 에 있 었 으 면 좋 겠 다.
아래 부분 은 제출 할 데이터 입 니 다.
이 부분 을 사전 형식 으로 바 꾸 기:
data = {
'from':'zh'
'to':'en'
'q':' '
}
from 과 to 는 쉽게 이해 할 수 있 습 니 다.바로 중국어 에서 영어 까지 입 니 다.좋아,우 리 는 그 가 중 영 이 든 간 에 모두"auto"가 되 어 그 가 스스로 알 아 맞 히 게 하 자.
q 는 우리 가 찾 은 단어 입 니 다.그러면 변수 q 로 표시 합 시다.이렇게 고 친 사전 은:
data = {
'from':'auto'
'to':'auto'
'q':q
}
제출 한 데이터 가 있 으 니 요청 헤드 를 만 듭 시다.다시 디 버 깅 도구 로 돌아 가 봅 시다.
headers 는 머리 를 요청 하 는 것 입 니 다.그 안에 이렇게 많은 물건 이 있 는데 우 리 는 무엇 을 사용 해 야 합 니까?
물론**User-agent:**빠 질 수 없습니다.
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 LBBROWSER'
}
자,우리 가 필요 로 하 는 물건 이 다 왔 으 니 시작 합 시다.우선 파일 도입,
import requests
우 리 는 다시 디 버 깅 도구 에 가서 반환 값 을 보고 가 져 온 내용 이 어떤 형식 인지 보 았 다.일반적으로 반환 값 은 json 도 있 고 html 도 있 습 니 다.여기 서 돌아 온 결 과 를 너 에 게 주 었 다.이것 이 바로 제 이 슨 의 데이터 형식 이다.
입력 한 텍스트 를 q 로 가 져 옵 니 다.
q = input(' :')
정리 한 후에 이렇게 되 었 다.
import requests
q = input(' :')
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
url = 'https://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_ciba&sign=c1b23d3ff9163427'
data = {
'from':'auto',
'to':'auto',
'q':q
}
res = requests.post(url=url,headers=headers,data=data).json()
print(res)
자,한번 실행 해 보 세 요.우 리 는 번역 할 내용 을 입력 합 니 다.
좋 습 니 다.결 과 는 되 돌 아 왔 습 니 다.제 이 슨 형식의 데이터 입 니 다.그 안에 우리 가 필요 로 하 는 결과 가 있 습 니 다.
단 어 를 바 꿔 보 세 요.
이게 무슨 상황 이 죠?왜 틀 렸 어 요?
좋아,우리 브 라 우 저 에서 해 보 자.
눌 러 봐...
발 견 했 어?기호 가 달라...
앞 에 뭐 예요?
sign=c1b23d3ff9163427'
이것 은
sign=4b733a5ea3f4dd5a
sign 은 동적 으로 생 성 된 것 입 니 다.어떻게 합 니까?생 성 방법 을 찾 아 라!우리 여기 보면...
이것 은 실행 중인 코드 의 위치 입 니 다.우 리 는 누 르 고 들 어 갑 니 다.
위 에서 한 줄 더 자 랐 는데 어 떡 하지?
왼쪽 아래 괄호 봤 어 요?누 르 면 깜짝 이 야!
잘 한다!정렬 이 잘 되 어 있 습 니 다.
다음은 여기에서 sign 의 위 치 를 찾 습 니 다.Ctrl+F,검색 을 시작 합 니 다.
23 개의 결 과 를 하나씩 살 펴 보고..............................................................
보 세 요.여 기 는 URL 을 연결 하 는 곳 입 니 다.위 가 바로 sign 의 암호 화 방식 입 니 다.
sign 뒤에 연 결 된 것 은 r 입 니 다.r 는 위의 한 줄 로 계산 한 것 입 니 다.
r = c()("6key_cibaifanyicjbysdlove1".concat(t.q.replace(/(^\s*)|(\s*$)/g, ""))).toString().substring(0, 16);
보 세 요.이 r 는 일련의 문자열 로 연결 되 어 있 습 니 다.무엇이 있 습 니까?
1、"6key_cibaifanyicjbysdlove1"
2、t.q.replace(/(^\s*)|(\s*$)/g, "")
첫 번 째 는 간단 합 니 다.고정된 문자열 입 니 다.두 번 째 는 요?t.q 는 무슨 귀신 입 니까?찾 아 보 자..
좋아,우리 이 줄 에서 정지점 을 찍 자.바로 앞의 줄 번호 에 점 을 찍 는 거 야.
파란색 라벨 보이 시 죠?이게 단점 이에 요.운행 할 때 여기까지 운행 하면 멈 추고 현재 상 태 를 알려 줍 니 다.자,단점 이 생 겼 습 니 다.
우리 통역 좀 시 켜 서 그 가 운행 해 보도 록 합 시다
정지점 으로 실 행 될 때 멈 추고 현재 인 자 를 표시 합 니 다.마 우 스 를 q 위 에...
소득 사 내!우리 가 찾 아야 할 단어 구나..
그리고 그들 을 한데 묶 어 놓 고...
"6key_cibaifanyicjbysdlove1"+" "
그런데 c()는 또 뭐야?좋아,암호 화 된 결과 가 무엇 인지 보 자.이 문자열 이 낯 이 익 죠?md5 같 지 않 아 요?
좋 습 니 다.그럼 md5 암호 화 도 구 를 찾 아 암호 화 전의 문자열 을 연결 해 보 겠 습 니 다.
"6key_cibaifanyicjbysdlove1 "
그리고 우 리 는 md5 암호 화 도구 에 넣 어 결 과 를 보 았 다.여기 봐..
이거 아니 야?32 비트 암호 화 된 상위 16 비트!
우 리 는 다시 한 번 검증 해 보 자.다른 단 어 를 찾 아 보 자.우 리 는'비'를 찾 아 보 자.
나 는 문자열 을 잘 맞 추 었 다.
"6key_cibaifanyicjbysdlove1 "
md5 도구 에 넣 고 보 세 요.똑 같 지 않 아 요?자,우 리 는 sign 의 암호 화 규칙 을 알 게 되 었 습 니 다.그러면 우 리 는 스스로 이 sign 을 암호 화 합 니 다.
md5 를 사용 하려 면 새 파일 을 참조 해 야 합 니 다.
import hashlib
md5 의 용법 은 다음 과 같다.
import hashlib
hash = hashlib.md5()#md5 ,md5 , , , ,
hash.update(bytes('admin',encoding='utf-8'))# ,
print(hash.hexdigest())#
# hash2=hashlib.sha384()# ,hashlib
# hash2.update(bytes('admin',encoding='utf-8'))
# print(hash.hexdigest())
hash3 = hashlib.md5(bytes('abd',encoding='utf-8'))
''' , md5 , , ,
, , ,
'''
hash3.update(bytes('admin',encoding='utf-8'))
print(hash3.hexdigest())
그리고 사인 의 암호 화 를 적어 보도 록 하 겠 습 니 다.
sign = (hashlib.md5(("6key_cibaifanyicjbysdlove1"+q).encode('utf-8')).hexdigest())[0:16]
다시 sign 을 url 에 연결 합 니 다.
sign = (hashlib.md5(("6key_cibaifanyicjbysdlove1"+q).encode('utf-8')).hexdigest())[0:16]
url = 'https://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_ciba'
url = url+'&sign='+sign
그리고 저희 가 운행 을 해 보도 록 하 겠 습 니 다.모든 것 이 OK,문제 없어!
마지막 으로 우 리 는 돌아 온 제 이 슨 데이터 에서 우리 가 원 하 는 부분 을 추출 했다.
rt= res['content']['out']
print(' :'+rt)
모든 코드 는
import requests
import hashlib
q = input(' :')
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
url = 'https://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_ciba'
sign = (hashlib.md5(("6key_cibaifanyicjbysdlove1"+q).encode('utf-8')).hexdigest())[0:16]
url = url+'&sign='+sign
data = {
'from':'auto',
'to':'auto',
'q':q
}
res = requests.post(url=url,headers=headers,data=data).json()
rt= res['content']['out']
print(' :'+rt)
실행 보기:OK,번역 완료!
요약:
post 가 요청 한 모든 data 는 이미 알 고 있 습 니 다.url 에 만 동적 인 sign 이 있 습 니 다.귀 찮 은 점 은 sign 의 암호 화 방식 을 찾 는 것 입 니 다.
일반적인 상황 에서 대부분의 sign 의 암호 화 는 md5 를 사용 합 니 다.암호 화 할 문자열 만 찾 으 면 됩 니 다.
정지점 을 사용 하여 운행 과정 을 추적 하 는 것 은 비교적 자주 사용 되 는 수단 이지 만 모두 결 과 를 찾 을 수 있 는 것 은 아니다.
python 이 금 산 어 패 를 사용 하 는 번역 기능(디 버 깅 도구 정지점 사용)에 대한 상세 한 설명 은 여기까지 입 니 다.더 많은 python 금 산 어 패 에 관 한 번역 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.