吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1260|回复: 18
上一主题 下一主题
收起左侧

[其他原创] 百度翻译的免费接口

  [复制链接]
跳转到指定楼层
楼主
pzx521521 发表于 2024-10-22 12:39 回帖奖励
本帖最后由 pzx521521 于 2024-10-22 12:56 编辑

百度翻译的免费接口

百度翻译的免费接口,起因是想在 Go 语言中实现翻译功能,但是没有找到合适的翻译 API,于是就自己写了一个。

如何使用

Install:

go get github.com/pzx521521/baidutranslatefree

Example usage:

package main

import (
    "fmt"
    gt "github.com/pzx521521/baidutranslatefree"
)

func main(){
    input := "Hello,World!"
    translater, _ := NewBaiduTranslater()
    // you can set it or not, it will be set by default("en", "zh")
    translater.SetFromTo("en", "zh")
    text, _ := translater.TransPort(input)
    fmt.Printf("%v\n", text)
    // Output: "你好,世界!"
}

All language codes can be found here:
const.go

破解过程分享

前因说明

  • 目前大部分google接口都是用的https://translate.google.com/translate_a/single
    但他总是弹验证(google的reCAPTCHA),
    因为国内的原因,ip经常改变,所以经常弹验证.导致用不了

  • 发现  https://translate.google.com/m 是可以用的
    python版本deep-translator

  • 看了一下,并没有golang版的(因为想二进制在arm上跑),所以就写了一个
    googletranslatefree

  • 写完了,想到很多人没法正常访问google, 忽然想看下buidu的
    电脑版的有点麻烦,使用的是手机版的接口分析

  • 为什么要写golang版本
    想在arm芯片/手机 上以二进制包的方式运行

CURL

原网页curl

curl -v 'https://fanyi.baidu.com/basetrans' \
  -H 'Cookie: BIDUPSID=6C787B3A6E1FFD2F18A23A5B5102C6CE; BDUSS=loa3hzU0JRT3RTSVlFYk0zNFNtZzIwbTNidWI2c0Raa2xPelB3NG1TZTdsU05uSVFBQUFBJCQAAAAAAAAAAAEAAADrTaMHNDYwMDY3OTYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALsI~Ga7CPxmSz; BDUSS_BFESS=loa3hzU0JRT3RTSVlFYk0zNFNtZzIwbTNidWI2c0Raa2xPelB3NG1TZTdsU05uSVFBQUFBJCQAAAAAAAAAAAEAAADrTaMHNDYwMDY3OTYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALsI~Ga7CPxmSz; BAIDUID=B61F7D6CE4B16113D11D2324CEDF91EF:SL=0:NR=10:FG=1; H_PS_PSSID=60450_60815_60620_60886_60875; BAIDUID_BFESS=B61F7D6CE4B16113D11D2324CEDF91EF:SL=0:NR=10:FG=1; delPer=0; BDRCVFR[feWj1Vr5u3D]=mk3SLVN4HKm; BA_HECTOR=25ak80a0ak0d2h0485242l8hkvn57h1jhcma61v; ZFY=QP9uUFZMCwFF3L:BXPFu5zDpYVWlQ15NOJnK29YKERpU:C; rsv_i=5106rSWG0Js3Emz4RuzSqb/EJYbeRuxQYP6WEHU4wULex+al+HEXfax397XgfGX3VosTb9Ykex7UMF6EOCUr6Kz8OehxUYE; BDORZ=AE84CDB3A529C0F8A2B9DCDD1D18B695; SE_LAUNCH=5%3A28825299_0%3A28825299_16%3A28825299_15%3A28825299; BDPASSGATE=IlPT2AEptyoA_yiU4SOA3lIN8eDEUsCD34OtViBi3ECGh67BmhH84NxhSl8LSSurGULMdI3JmcldjijsQmFuirMenBIUiixSb6Ta7tiVx_TwSa62-rss_2zgGFkUwuDPbRhL-3MEF3VEVFpbevHGj3wigBSnsQlsecbNs6LWmMr81TyG3mHQx6iIK8RkLGPYKr_C94rSjE6KLl_WZOmtT6jebCJHO7As70aOb2YiAvfdyEoXCurSRvEA0nXQ37J2_4K-1PW79cC8AE9SzZR8ST1tdEiV5tD6MSgsAM4UlK6DSKzePcCQUiqG_swka0PbSwdWKQ3zmtkGDUYX6XYlJHVj_NnFFTHrDjUNYMGGihjZCXwVqlOEIw4xqptfE0LpW4-0LBpDYit-hS7fy3CmpSr2HwPgi0FvMtoMInOmzJl4bn63Gm4K6Hqzc7Jv-oahWVaG1SbdArnlLWNKuuKyJaXaVKr82VEhqS_XgECavkjiZh4aNMR7kzgCwnV7TWiB9e7WVpXjUwTtyNlfwrXqvszDu9SUqzaTw6uCLdyyNAAKVYI0qBJ4CmjJzGy_eXx_O4G6v7z9IUjZj5RMwtyIjyZnlPA01NJQOs4rBc1LwcSIkWwV0yYto_Sz1wZD2-rL9AZT_dWkY98LAobVVmVRgrtA2V4vIJTzvt4wE52TBz4p1HXh0KhpxUF8h71WOQ4AZ5buavsEUVuCbQYjL2qip7diFOEjEi25v8zY3J8NCRn7y4REqUEut0or0oat104XwIk7oagqUyCuyq0ZIai7hZgZy8yJgQZBV0q3X7vk8FKyIBEq-nnzEFzbxK;' \
  --data-raw 'query=hello%2Cword&from=en&to=zh&token=f1a8c5324e2a5667fe9501845cb83b69&sign=645327.867326'

抓包结果,可以看到需要填入cookie, token, sign

总体流程

  • GET主页,从Set-Cookie获取BAIDUID
  • 通过GET主页 携带BAIDUID获取token
  • 每次插叙的时候,根据查询的内容计算sign
  • 访问 https://fanyi.baidu.com/basetrans 携带BAIDUID,token,sign 返回结果

BAIDUID

  • BAIDUID 直接GET主页,从Set-Cookie获取BAIDUID
  • GET主页的时候如果不携带cookie,会返回Set-Cookie,如果携带则不会返回Set-Cookie
  • GET的时候注意一定要加手机的UA,手机和电脑端的不一样,估计是在路由层(如:nginx)做了处理
    经测试(逐条删除cookies数据看返回结果) cookie仅需保留 BAIDUID 和 UA

token 获取

  • 注意要请求两遍,第一遍是获取BAIDUID,第二遍是通过BAIDUID获取token
  • token位于html中, 具体代码如下:
    fanyi.baidu.com/ line 21
    <script>
    page.common = {
      token: '3079487ebfc9fc012ef8dbcc18894a7d',
      langList: {
  • 如果不携带BAIDUID,会返回
    fanyi.baidu.com/ line 21
    <script>
    page.common = {
      token: '',
      langList: {

    然后从js代码中重新加载页面
    fanyi.baidu.com/ line 927

    if (!page.common.token) {
      location.reload();
    }

Sign 计算

  • 比如翻译hello,Sign就是对hello的计算
  • 参考代码如下:
    https://github.com/Kr1s77/awesome-python-login-model
    文件中的translate.js就是从他那里拿的,
    trans.py 修改最新的BAIDUID和token之后还是能用的
  • golang中使用的是OTTO解析json,本来想让chatGPT直接把js转成golang的,
    但是他转的有问题(calsign_chatgpt_err.go),懒得一点一点跟.放弃,直接使用原生js
  • 使用otto解析的时候会有问题,因为js中translate.js中会有一些逻辑永远用不到,在这些逻辑中会有未定义的函数,
    otto解析的时候就会报错(python-js2py/浏览器解析都没有问题),
    本想pr给otto的,发现他测试文档中大篇幅测试了函数未定义的错误,pr之后也不会采纳,就放弃了
    golang中通过修改js代码来解决这个问题

todo

目前没有写python版本的想法,因为作者并不是一个单独的项目,所以没办法pr

免费评分

参与人数 3吾爱币 +9 热心值 +3 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
3536825424 + 1 + 1 我很赞同!
mr88fang + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
假钞换贞操. 发表于 2024-10-22 13:29
百度翻译实名认证后每个月都有免费额度,高级版免费调用量调整为100万字符/月。
沙发
gongxiaowei 发表于 2024-10-22 12:47
羡慕你们这些会代码的大神,想要什么自己写一个,真厉害
3#
a2197809 发表于 2024-10-22 13:04
5#
gwh1997 发表于 2024-10-22 13:37
感谢分享
6#
 楼主| pzx521521 发表于 2024-10-22 13:54 |楼主
假钞换贞操. 发表于 2024-10-22 13:29
百度翻译实名认证后每个月都有免费额度,高级版免费调用量调整为100万字符/月。

哈哈  一些东西不太方便实名
7#
lyk726 发表于 2024-10-22 14:16
小白看不懂哈哈
8#
aiguohou 发表于 2024-10-22 14:24
牛!感谢分享
9#
zdmjl 发表于 2024-10-22 15:06
还是大佬好啊,
想起来什么了,就随手写一个
10#
BTFKM 发表于 2024-10-22 15:41
给个建议, 可以用llama3.2小模型来翻译, 部署比较方便 资源占用也不大
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-1 07:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表