python 파충 류 는 어떻게 바 이 두 번역 을 실현 합 니까?

15012 단어 python파충번역
환경.
python 버 전 번호
계통
유람 기
python 3.7.2
win7
google chrome
본문 에 대하 여
본 고 는 파충류 의 방식 을 통 해 간단 한 바 이 두 번역 을 실현 할 것 이다.본 논문 의 코드 는 학습 만 제공 하고 비 즈 니스 역할 을 할 수 없습니다.비 즈 니스 역할 은 api.fanyi.baidu.com 에 가서 비용 을 지불 하 는 api 를 구 매 하 십시오.만약 침범 이 있 으 면 즉시 글 을 삭제 해라!
사고의 방향 을 실현 하 다.
사이트 파일 에서 숨겨 진 무료 api 를 찾 습 니 다.api 에 필요 한 인 자 를 입력 하고 요청 합 니 다.돌아 온 제 이 슨 결과 에서 해당 하 는 번역 결 과 를 찾 았 다.
바 이 두 번역 의 반 기어 오 르 기 메커니즘
  • js 알고리즘 으로 생 성 된 sign
  • 쿠키 검사
    token 암호
    사이트 파일 에서 숨겨 진 무료 api 찾기
    바 이 두 번역 에 들 어가 번역 해 야 할 문 자 를 마음대로 입력 하 세 요.번역 결과 가 나 왔 을 때 F12 를 누 르 고 NETWORK 를 선택 하고 마지막 으로 XHR 파일 을 누 르 십시오.이때 사이트 파일 을 모두 불 러 왔 기 때문에 F5 를 새로 고 쳐 야 합 니 다.

    새로 고침 하면 v2transapi 를 발견 할 수 있 습 니 다.시작 하 는 파일 입 니 다.맞습니다.이것 이 바로 우리 가 찾 는 api 인터페이스 입 니 다.파일-preview 를 누 르 면 json 형식의 데이터 에서 번역 결 과 를 찾 아 검증 에 성공 할 수 있 습 니 다.
    또한,우 리 는 우리 의 쿠키 와 token 을 가 져 와 야 합 니 다.그 후의 반 기어 오 르 기 체제 에서 우 리 는 그것들 을 사용 해 야 합 니 다.위 치 는 다음 과 같 습 니 다.
    쿠키 위치:

    token 위치:

    api 정보
    인터페이스:https://fanyi.baidu.com/v2tra..
    요청 방식:post
    요청 매개 변수 전체
    매개 변수
    소개 하 다.
    from
    원시 언어
    to
    목표 언어
    query
    번역 텍스트
    sign
    js 알고리즘 으로 생 성 된 서명(반전)
    token
    요청 암호
    코드 쓰기 시작
    request 와 execjs 라 이브 러 리 가 져 오기
    
    import requests
    import execjs
    requests HTTP 라 이브 러 리,파충류 에 사용execjs 는 js 코드 를 호출 하 는 데 사 용 됩 니 다.
    반 파충류
    바 이 두 번역 은 쿠키 식별 반 기어 오 르 기 메커니즘 이 있 기 때문에 우 리 는 우리 가 방금 얻 은 쿠키 를 설정 하여 네트워크 거미 의 신분 을 엄호 합 니 다.
    
    headers = {'cookie':'        cookie'}
    그리고 token(암호)을 설정 해 야 합 니 다.
    
    token = '        token'
    마지막 으로 sign 반전 메커니즘 만 남 았 습 니 다.sign 은 js 알고리즘 이 번역문 에 생 성 된 서명 입 니 다.제 가 인터넷 에서 검색 해 봤 는데 해당 하 는 js 알고리즘 을 찾 아서 여러분 께 공유 해 드 렸 습 니 다.
    
    var i = "320305.131321201"
    function n(r, o) {
      for (var t = 0; t < o.length - 2; t += 3) {
        var a = o.charAt(t + 2);
        a = a >= "a" ? a.charCodeAt(0) - 87 : Number(a), a = "+" === o.charAt(t + 1) ? r >>> a : r << a, r = "+" === o.charAt(t) ? r + a & 4294967295 : r ^ a
      }
      return r
    }
     
     
    function e(r) {
      var o = r.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g);
      if (null === o) {
        var t = r.length;
        t > 30 && (r = "" + r.substr(0, 10) + r.substr(Math.floor(t / 2) - 5, 10) + r.substr(-10, 10))
      } else {
        for (var e = r.split(/[\uD800-\uDBFF][\uDC00-\uDFFF]/), C = 0, h = e.length, f = []; h > C; C++) "" !== e[C] && f.push.apply(f, a(e[C].split(""))), C !== h - 1 && f.push(o[C]);
        var g = f.length;
        g > 30 && (r = f.slice(0, 10).join("") + f.slice(Math.floor(g / 2) - 5, Math.floor(g / 2) + 5).join("") + f.slice(-10).join(""))
      }
      var u = void 0, l = "" + String.fromCharCode(103) + String.fromCharCode(116) + String.fromCharCode(107);
      u = null !== i ? i : (i = window[l] || "") || "";
      for (var d = u.split("."), m = Number(d[0]) || 0, s = Number(d[1]) || 0, S = [], c = 0, v = 0; v < r.length; v++) {
        var A = r.charCodeAt(v);
        128 > A ? S[c++] = A : (2048 > A ? S[c++] = A >> 6 | 192 : (55296 === (64512 & A) && v + 1 < r.length && 56320 === (64512 & r.charCodeAt(v + 1)) ? (A = 65536 + ((1023 & A) << 10) + (1023 & r.charCodeAt(++v)), S[c++] = A >> 18 | 240, S[c++] = A >> 12 & 63 | 128) : S[c++] = A >> 12 | 224, S[c++] = A >> 6 & 63 | 128), S[c++] = 63 & A | 128)
      }
      for (var p = m, F = "" + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(97) + ("" + String.fromCharCode(94) + String.fromCharCode(43) + String.fromCharCode(54)), D = "" + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(51) + ("" + String.fromCharCode(94) + String.fromCharCode(43) + String.fromCharCode(98)) + ("" + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(102)), b = 0; b < S.length; b++) p += S[b], p = n(p, F);
      return p = n(p, D), p ^= s, 0 > p && (p = (2147483647 & p) + 2147483648), p %= 1e6, p.toString() + "." + (p ^ m)
    }
    잠깐 만,우리 python 으로 파충류 하 는 거 아니 야?그럼 우 리 는 js 코드 도 모 르 는데 어떻게 호출 합 니까?
    다행히 python 은 강력 한 제3자 라 이브 러 리 를 가지 고 있 습 니 다.물론 js 코드 를 호출 하 는 라 이브 러 리 도 빠 질 수 없습니다.js 코드 를 호출 하 는 라 이브 러 리 가 많 지만 저 는 execjs 를 사용 하 는 것 을 추천 합 니 다.간단 하고 기능 이 완전 합 니 다.
    js 알고리즘 코드 를 호출 하기 전에 우 리 는 사용자 에 게 번역문 을 입력 하 게 해 야 한다.
    
    q = input('  :')
    그 후에 우 리 는 execjs 의 copile 과 call 방법 으로 sign 을 얻 을 수 있 습 니 다.
    
    js = '''var i = "320305.131321201"
    function n(r, o) {
      for (var t = 0; t < o.length - 2; t += 3) {
        var a = o.charAt(t + 2);
        a = a >= "a" ? a.charCodeAt(0) - 87 : Number(a), a = "+" === o.charAt(t + 1) ? r >>> a : r << a, r = "+" === o.charAt(t) ? r + a & 4294967295 : r ^ a
      }
      return r
    }
     
     
    function e(r) {
      var o = r.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g);
      if (null === o) {
        var t = r.length;
        t > 30 && (r = "" + r.substr(0, 10) + r.substr(Math.floor(t / 2) - 5, 10) + r.substr(-10, 10))
      } else {
        for (var e = r.split(/[\uD800-\uDBFF][\uDC00-\uDFFF]/), C = 0, h = e.length, f = []; h > C; C++) "" !== e[C] && f.push.apply(f, a(e[C].split(""))), C !== h - 1 && f.push(o[C]);
        var g = f.length;
        g > 30 && (r = f.slice(0, 10).join("") + f.slice(Math.floor(g / 2) - 5, Math.floor(g / 2) + 5).join("") + f.slice(-10).join(""))
      }
      var u = void 0, l = "" + String.fromCharCode(103) + String.fromCharCode(116) + String.fromCharCode(107);
      u = null !== i ? i : (i = window[l] || "") || "";
      for (var d = u.split("."), m = Number(d[0]) || 0, s = Number(d[1]) || 0, S = [], c = 0, v = 0; v < r.length; v++) {
        var A = r.charCodeAt(v);
        128 > A ? S[c++] = A : (2048 > A ? S[c++] = A >> 6 | 192 : (55296 === (64512 & A) && v + 1 < r.length && 56320 === (64512 & r.charCodeAt(v + 1)) ? (A = 65536 + ((1023 & A) << 10) + (1023 & r.charCodeAt(++v)), S[c++] = A >> 18 | 240, S[c++] = A >> 12 & 63 | 128) : S[c++] = A >> 12 | 224, S[c++] = A >> 6 & 63 | 128), S[c++] = 63 & A | 128)
      }
      for (var p = m, F = "" + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(97) + ("" + String.fromCharCode(94) + String.fromCharCode(43) + String.fromCharCode(54)), D = "" + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(51) + ("" + String.fromCharCode(94) + String.fromCharCode(43) + String.fromCharCode(98)) + ("" + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(102)), b = 0; b < S.length; b++) p += S[b], p = n(p, F);
      return p = n(p, D), p ^= s, 0 > p && (p = (2147483647 & p) + 2147483648), p %= 1e6, p.toString() + "." + (p ^ m)
    }
    '''
    sign = execjs.compile(js).call("e",q)
    (위 코드 에서 sign 를 가 져 왔 습 니 다)
    일련의 반 파충류 준 비 를 통 해 우 리 는'원 언어'와'목표 언어'의 마지막 두 가지 인 자 를 설정 할 수 있다.
    
    From = 'en'
    To = 'zh'
    (상기 코드 는 영문 번역 을 대표 합 니 다.다른 언어 로 번역 하려 면 언어 에 대응 하 는 영문 줄 임 말 을 입력 하 십시오.영문 줄 임 말 대응 표 는 본문 마지막 에 놓 입 니 다)
    이어서 우 리 는 인자 제 이 슨 을 구축 할 수 있다.
    
    data = {'from':From,
    'to':To,
    'query':q,
    'sign':sign,
    'token':'14b5f31e3c65d89a0b1c3f756e53942e'}
    마지막 으로 우 리 는 데 이 터 를 요청 하고 인쇄 할 수 있다.
    
    text = requests.post(url,headers=headers,data=data).json()
    print(text)
    우 리 는 인쇄 된 결과 가 json 사전 이라는 것 을 발 견 했 습 니 다.번역 결 과 는 바로 그 안에 있 습 니 다.우 리 는 결 과 를 번역 해 야 하기 때문에 우 리 는 번역 결과 의 위 치 를 색인 하여 다시 인쇄 할 수 있 습 니 다.
    
    text = requests.post(url,headers=headers,data=data).json()['trans_result']['data'][0]['dst']
    print(text)
    실행 결과:

    전체 코드:
    
    import requests
    import execjs
    url = 'https://fanyi.baidu.com/v2transapi'
    headers = {'cookie':'  cookie'}
    js = '''var i = "320305.131321201"
    function n(r, o) {
      for (var t = 0; t < o.length - 2; t += 3) {
        var a = o.charAt(t + 2);
        a = a >= "a" ? a.charCodeAt(0) - 87 : Number(a), a = "+" === o.charAt(t + 1) ? r >>> a : r << a, r = "+" === o.charAt(t) ? r + a & 4294967295 : r ^ a
      }
      return r
    }
     
     
    function e(r) {
      var o = r.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g);
      if (null === o) {
        var t = r.length;
        t > 30 && (r = "" + r.substr(0, 10) + r.substr(Math.floor(t / 2) - 5, 10) + r.substr(-10, 10))
      } else {
        for (var e = r.split(/[\uD800-\uDBFF][\uDC00-\uDFFF]/), C = 0, h = e.length, f = []; h > C; C++) "" !== e[C] && f.push.apply(f, a(e[C].split(""))), C !== h - 1 && f.push(o[C]);
        var g = f.length;
        g > 30 && (r = f.slice(0, 10).join("") + f.slice(Math.floor(g / 2) - 5, Math.floor(g / 2) + 5).join("") + f.slice(-10).join(""))
      }
      var u = void 0, l = "" + String.fromCharCode(103) + String.fromCharCode(116) + String.fromCharCode(107);
      u = null !== i ? i : (i = window[l] || "") || "";
      for (var d = u.split("."), m = Number(d[0]) || 0, s = Number(d[1]) || 0, S = [], c = 0, v = 0; v < r.length; v++) {
        var A = r.charCodeAt(v);
        128 > A ? S[c++] = A : (2048 > A ? S[c++] = A >> 6 | 192 : (55296 === (64512 & A) && v + 1 < r.length && 56320 === (64512 & r.charCodeAt(v + 1)) ? (A = 65536 + ((1023 & A) << 10) + (1023 & r.charCodeAt(++v)), S[c++] = A >> 18 | 240, S[c++] = A >> 12 & 63 | 128) : S[c++] = A >> 12 | 224, S[c++] = A >> 6 & 63 | 128), S[c++] = 63 & A | 128)
      }
      for (var p = m, F = "" + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(97) + ("" + String.fromCharCode(94) + String.fromCharCode(43) + String.fromCharCode(54)), D = "" + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(51) + ("" + String.fromCharCode(94) + String.fromCharCode(43) + String.fromCharCode(98)) + ("" + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(102)), b = 0; b < S.length; b++) p += S[b], p = n(p, F);
      return p = n(p, D), p ^= s, 0 > p && (p = (2147483647 & p) + 2147483648), p %= 1e6, p.toString() + "." + (p ^ m)
    }
    '''
    
    From = '   '
    To = '    '
    token = '  token'
    q = input('  :')
    sign = execjs.compile(js).call("e",q)
    data = {'from':From,
    'to':To,
    'query':q,
    'sign':sign,
    'token':token}
    
    
    text = requests.post(url,headers=headers,data=data).json()['trans_result']['data'][0]['dst']
    print(text)
    언어 영문 약어 대응 표
    
    {
            'zh': '  ','jp': '  ','jpka': '    ','th': '  ','fra': '  ','en': '  ','spa': '    ','kor': '  ','tr': '    ','vie': '   ','ms': '   ','de': '  ','ru': '  ','ir': '   ','ara': '    ','est': '     ','be': '     ','bul': '     ','hi': '   ','is': '   ','pl': '   ','fa': '   ','dan': '   ','tl': '    ','fin': '   ','nl': '   ','ca': '      ','cs': '   ','hr': '     ','lv': '     ','lt': '    ','rom': '     ','af': '   ','no': '   ','pt_BR': '   ','pt': '    ','swe': '   ','sr': '     ','eo': '   ','sk': '     ','slo': '      ','sw': '     ','uk': '    ','iw': '    ','el': '   ','hu': '    ','hy': '     ','it': '    ','id': '   ','sq': '      ','am': '     ','as': '    ','az': '     ','eu': '    ','bn': '    ','bs': '     ','gl': '     ','ka': '     ','gu': '     ','ha': '   ','ig': '   ','iu': '    ','ga': '    ','zu': '   ','kn': '    ','kk': '    ','ky': '     ','lb': '    ','mk': '    ','mt': '    ','mi': '   ','mr': '    ','ne': '    ','or': '    ','pa': '    ','qu': '    ','tn': '     ','si': '    ','ta': '    ','tt': '    ','te': '    ','ur': '    ','uz': '     ','cy': '    ','yo': '    ','yue': '  ','wyw': '   ','cht': '    '  }
    이상 은 python 파충류 가 바 이 두 번역 을 어떻게 실현 하 는 지 에 대한 상세 한 내용 입 니 다.python 파충류 가 바 이 두 번역 을 실현 하 는 데 관 한 자 료 는 우리 의 다른 관련 글 에 주목 하 세 요!

    좋은 웹페이지 즐겨찾기