Google翻译请求(难点是tk参数)

业务需求需要将一些文字翻译一下···

但是直接调用接口收费啊啊啊啊(貌似是前几百万字免费,然后就开始收费了)····

就想研究一下Google翻译接口...

想模拟Google向服务器发送一个Http请求...然后得到返回的翻译数据;

但是发现,服务器有个验证机制{一段时间内,如果你向服务器发送一个请求,服务器首先会返回一个TKK值,

然后还需要用这个TKK值和你要翻译的内容生成一个tk值,主要就是这个tk值不对的话,就会返回403错误...}

网上找到一个例子,貌似是国外的一个大神通过js来生成的tk值,,,

package LibHW {
class jsCommon{

    function b(a, b) {
        for (var d = 0; d < b.length - 2; d += 3) {
            var c = b.charAt(d + 2),
                c = "a" <= c ? c.charCodeAt(0) - 87 : Number(c),
                c = "+" == b.charAt(d + 1) ? a >>> c : a << c;
            a = "+" == b.charAt(d) ? a + c & 4294967295 : a ^ c
        }
        return a
    }

    function tk(a,TKK) {
        for (var e = TKK.split("."), h = Number(e[0]) || 0, g = [], d = 0, f = 0; f < a.length; f++) {
            var c = a.charCodeAt(f);
            128 > c ? g[d++] = c : (2048 > c ? g[d++] = c >> 6 | 192 : (55296 == (c & 64512) && f + 1 < a.length && 56320 == (a.charCodeAt(f + 1) & 64512) ? (c = 65536 + ((c & 1023) << 10) + (a.charCodeAt(++f) & 1023), g[d++] = c >> 18 | 240, g[d++] = c >> 12 & 63 | 128) : g[d++] = c >> 12 | 224, g[d++] = c >> 6 & 63 | 128), g[d++] = c & 63 | 128)
        }
        a = h;
        for (d = 0; d < g.length; d++) a += g[d], a = b(a, "+-a^+6");
        a = b(a, "+-3^+b+-f");
        a ^= Number(e[1]) || 0;
        0 > a && (a = (a & 2147483647) + 2147483648);
        a %= 1E6;
        return a.toString() + "." + (a ^ h)
    }
}
}

咦·为什么还要加上"package class",因为这段js,我要用到C#语言中,具体操作详见我这篇文章---"在c#中运行js脚本(将js文件生成为.dll文件)"

主要用到的就是这个函数:
function tk(a,TKK)

//a代表的就是要翻译的内容;
//TKK就是服务器首先返回的一个TKK值;

TKK获取代码(PHP):

<?php
ini_set(‘display_errors‘, ‘On‘);
error_reporting(E_ALL);
mb_internal_encoding("UTF-8");
$timeout = 10 ;
$url = "http://translate.google.cn" ;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER[‘HTTP_USER_AGENT‘]);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
$conts = curl_exec($ch);
curl_close($ch);
if(preg_match("#TKK\=eval\(‘\(\(function\(\)\{var\s+a\\\\x3d(-?\d+);var\s+b\\\\x3d(-?\d+);return\s+(\d+)\+#isU", $conts, $arr)){
    $tkk = $arr[3] .‘.‘.($arr[1] + $arr[2]) ;
    exit($tkk) ;
    //var_dump($arr);
}else{
    exit("0");
}

?>

好了、现在主要矛盾tk已解决,其余的就只要模拟一下http请求就可以了...

GG

时间: 2024-07-29 04:00:36

Google翻译请求(难点是tk参数)的相关文章

破解google翻译API全过程

前言 google的翻译不得不承认它是比较好的.但是google翻译对外提供的翻译接口都是收钱的,做为一名普普通通的开发者,囊中羞涩,因此就需要借助技术的力量来完成免费的翻译接口的调用. git 首先在github上我们找到了这篇链接 https://github.com/ssut/py-googletrans 看介绍免费.无限制,这刚好适合我们来用.于是按照它的操作步骤我们来试试: 由于它是python的,因此第一步是去下载它的python库,由于我没有配置python pip的环境变量,因此

获取google翻译的音频文件_合并音频文件的方法

1. 把引文输入google 翻译,然后点击“朗读” 2. 按下F12键,打开也变调试窗口,在网络标签页中,算中“媒体”列表,删选出媒体文件如下: 3. 获取音频文件 选中请求网址,复制网址,在浏览器中黏贴,访问 右键弹出菜单中,选中“另存为”,即可获取“音频文件” 4. 合并音频文件片段 因为google翻译,会截取翻译的段落为一段一段,所以获取的翻译文件也是一段一段的. 分别下载后,并按照顺序明明每个音频文件. 如文件 0001.MP3, 0002.mp3, 0003.MP3 算中第一个文件

使用jQuery集成Google翻译

利用jQuery,轻松将google翻译集成到你的web应用中. 1. [代码][JavaScript]代码     ?1<script src="Scripts/TranslatorScript.js" type="text/javascript"></script>?2 [代码]LoadScript,设置路径     ??1LoadScript(scriptPath + "jQuery-BlockUI.js");2Lo

【翻译自mos文章】参数Db_recovery_file_dest_size的最大值是多少

参数Db_recovery_file_dest_size的最大值是多少? 参考原文: What Is Maximum Size For Db_recovery_file_dest_size In Oracle 10.2, 11.1, 11.2 (Doc ID 1404822.1) 适用于: Oracle Server - Enterprise Edition - Version: 10.2.0.4 and later   [Release: 10.2 and later ] Informatio

google翻译,翻译当前的网页

网页翻译为德语(Translate Page To German) <a href="javascript: void(window.open('http://translate.google.com/translate?u='+escape(location.href)+'&langpair=en%7Cde', 'English_to_German', 'resizable,scrollbars,status'))">网页翻译为德语(Translate Page

Google翻译PDF文档

翻译软件虽多如牛毛,但有关整段/全文翻译,堪用的软件极少, 涉及专业技术的文献.胜任翻译工作的人力稀缺.少不了project师讴心沥血. 由于多是PDF格式.即使要翻译个概要,也要折腾好几回: 另存为TXT文本→逐段翻译→插入翻译结果→又一次编辑... Google翻译的强大功能一直为非常多人所津津乐道. 殊不知,除了在线翻译某段文字或网页,Google还能够直接翻译Word或PDF文档! 也就是说.当你输入 Word或PDF文档的URL地址,再点击"翻译"button时, 无论这个文

js获取请求地址?后的参数和值

js获取请求地址?后的参数和值 //获取url中的参数 function getUrlParam(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象 //alert("window.location.search="+window.location.search); var r = window.locat

Google翻译

本博文的主要内容有 .Google翻译的介绍    .Google翻译之一:内容板块的翻译    .Google翻译之二:网页的翻译  .Google翻译之四:文档的翻译    .Google翻译之四:Google翻译辅助系统 .Google翻译之五:Google网站翻译辅助系统      .Google翻译之六:全球商机洞察  1.Google翻译的介绍 https://zh.wikipedia.org/wiki/Google%E7%BF%BB%E8%AF%91 2.Google翻译之一:内容

[python]Google翻译小程序

工程中要用到一个翻译的功能,也就是提交到Google翻译后,获取返回的结果. 首先摸清Google翻译的脉络: request处理 提交翻译后,查看request和response分别是什么内容: 首先我们得到了提交的URL url = httl://translate.google.cn/translate_a/t 还有如上的提交表单,分析可知: sl = source language = en(english) tl = target language = zh-CN(简体中文) 以及编码