整理之前写的代码,之前写了这个垃圾站 准备做英文垃圾站的 然后没有做。分享出来算了,有需要的自取。
自己写的接口 有5000字数限制。但是文件上传没有字数限制,目前上传文件这个函数失效了,没有修复,有需要的联系。
<?php
function Google_Vq($a,$b='426833.230278880'){
$d = explode(".", $b);
$b = intval($d[0]);
for ($e = array(), $f = 0, $g = 0; $g < mb_strlen($a); $g++) {
$l = Google_charCodeAt($a, $g);
if (128 > $l) {
$e[$f++] = $l;
} else {
if (2048 > $l) {
$e[$f++] = $l >> 6 | 192;
} else {
if (55296 == ($l & 64512) && $g + 1 < strlen($a) && 56320 == (Google_charCodeAt($a, $g + 1) & 64512)) {
$l = 65536 + (($l & 1023) << 10) + (Google_charCodeAt($a, ++$g) & 1023);
$e[$f++] = $l >> 18 | 240;
$e[$f++] = $l >> 12 & 63 | 128;
} else {
$e[$f++] = $l >> 12 | 224;
$e[$f++] = $l >> 6 & 63 | 128;
$e[$f++] = $l & 63 | 128;
}
}
}
}
$a = $b;
for ($f = 0; $f < count($e); $f++) {
$a += $e[$f];
$a = Google_TQ($a, "+-a^+6");
}
$a = Google_TQ($a, "+-3^+b+-f");
$a ^= floatval($d[1]);
0 > $a && ($a = ($a & 2147483647) + 2147483648);
$a = intval(fmod(floatval($a), 1000000));
return (strval($a) . "." . strval(($a ^ $b)));
}
function Google_charCodeAt($str, $index)
{
$char = mb_substr($str, $index, 1, 'UTF-8');
if (mb_check_encoding($char, 'UTF-8')) {
$ret = mb_convert_encoding($char, 'UTF-32BE', 'UTF-8');
return hexdec(bin2hex($ret));
} else {
return null;
}
}
function Google_TQ($a, $b)
{
for ($c = 0; $c < strlen($b) - 2; $c += 3) {
$d = $b[$c + 2];
$d = "a" <= $d ? Google_charCodeAt($d, 0) - 87 : intval($d);
$d = "+" == $b[$c + 1] ? Google_Demo($a, $d) : $a << $d;
$a = "+" == $b[$c] ? $a + $d & 4294967295 : $a ^ $d;
}
return $a;
}
function Google_Demo($v, $y)
{
$t = $v >> $y;
$f = 0x7fffffff >> ($y - 1);
return ($t & $f);
}
//获取TKK的值
function Google_GetTkk(){
$tkfile="Google.tkk";
if(!file_exists($tkfile)){
$tkk = 0;
$tmpInfo = Google_Get('https://translate.google.cn');
//print_r($tmpInfo);
if(preg_match("/tkk:\'(.*)\'/isU",$tmpInfo, $arr)){
$tkk = $arr[1] ;
}
file_put_contents($tkfile,$tkk);
}else{
$tkk=file_get_contents($tkfile);
}
return $tkk;
}
function Google_Get($url,$cookie=""){ // 模拟提交数据函数
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_COOKIE, $cookie);
curl_setopt($curl, CURLOPT_REFERER,$url);// 设置Referer
curl_setopt($curl, CURLOPT_POST, 0); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);//捕抓异常
}
curl_close($curl); // 关闭CURL会话
return $tmpInfo; // 返回数据
}
function Google_Get_Zimu($str){
$nword = explode(" ",$str);
foreach($nword as $letter){
$new_name .= $letter{0};
}
return strtoupper($new_name);
}
function Google_Post_UPload($data){
$url="https://translate.googleusercontent.cn/translate_f";
$header = array( //头部信息,上面的函数已说明
'Accept:application/json, text/javascript, */*; q=0.01',
'Accept-Charset:text/html,application/xhtml+xml,application/xml;q=0.7,*;q=0.3',
'Accept-Encoding:gzip,deflate,sdch',
'Accept-Language:zh-CN,zh;q=0.8',
'Connection:keep-alive',
'Content-Type: multipart/form-data; boundary=----WebKitFormBoundarykU2RB8zXt3dUA7lk',
//'CLIENT-IP:'.$ip,
//'X-FORWARDED-FOR:'.$ip,
);
$curl = curl_init(); //这里并没有带参数初始化
curl_setopt($curl, CURLOPT_URL, $url);//这里传入url
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);//对认证证书来源的检查,不开启次功能
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);//从证书中检测 SSL 加密算法
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
//模拟用户使用的浏览器,自己设置,我的是"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0"
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);//自动设置referer
curl_setopt($curl, CURLOPT_POST, 1);//开启post+
curl_setopt($curl, CURLOPT_ENCODING, "gzip" );
curl_setopt($curl, CURLOPT_REFERER,'https://translate.google.com/');// 设置Referer
//HTTP请求头中"Accept-Encoding: "的值。支持的编码有"identity","deflate"和"gzip"。如果为空字符串"",请求头会发送所有支持的编码类型。
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);//要传送的数据
curl_setopt($curl, CURLOPT_TIMEOUT, 30);//设置超时限制,防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0);//0表示不输出Header,1表示输出
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);//捕抓异常
}
curl_close($curl); // 关闭CURL会话
return $tmpInfo; // 返回数据
}
function Google_UPload_Doc($file,$mod){//mod=1 本地读取 mod=2 远程获取 mod=其他 直接提交
if($mod==1){
$content=file_get_contents($file);
}elseif($mod==2){
$content=Google_Get($file);
}else{
$content=$file;
}
//定义POST数据
$data = "------WebKitFormBoundarykU2RB8zXt3dUA7lk\r\n"
."Content-Disposition: form-data; name=\"file\"; filename=\"1.doc\"\r\n"
."Content-Type: application/msword\r\n"
. "\r\n"
. $content. "\r\n"
. "------WebKitFormBoundarykU2RB8zXt3dUA7lk\r\n"
. "Content-Disposition: form-data; name=\"sl\"\r\n"
. "\r\n"
. "zh-CN\r\n" //原始语言
. "------WebKitFormBoundarykU2RB8zXt3dUA7lk\r\n"
. "Content-Disposition: form-data; name=\"tl\"\r\n"
. "\r\n"
. "en\r\n" //翻译结果语言
. "------WebKitFormBoundarykU2RB8zXt3dUA7lk\r\n"
. "Content-Disposition: form-data; name=\"js\"\r\n"
. "\r\n"
. "y\r\n"
. "------WebKitFormBoundarykU2RB8zXt3dUA7lk\r\n"
. "Content-Disposition: form-data; name=\"prev\"\r\n"
. "\r\n"
. "_t\r\n"
. "------WebKitFormBoundarykU2RB8zXt3dUA7lk\r\n"
. "Content-Disposition: form-data; name=\"hl\"\r\n"
. "\r\n"
. "en\r\n"
. "------WebKitFormBoundarykU2RB8zXt3dUA7lk\r\n"
. "Content-Disposition: form-data; name=\"ie\"\r\n"
. "\r\n"
. "UTF-8\r\n"
. "------WebKitFormBoundarykU2RB8zXt3dUA7lk\r\n"
. "Content-Disposition: form-data; name=\"text\"\r\n"
. "\r\n"
. "\r\n"
. "------WebKitFormBoundarykU2RB8zXt3dUA7lk\r\n"
. "Content-Disposition: form-data; name=\"edit-text\"\r\n"
. "\r\n"
. "\r\n"
. "------WebKitFormBoundarykU2RB8zXt3dUA7lk";
$html=Google_Post_UPload($data);
return $html;
}
function Google($file,$mod){//mod=1 本地读取 mod=2 远程获取 mod=其他 直接提交
$html=Google_UPload_Doc($file,$mod);
preg_match_all("/<p style=margin:0pt>(.*)<\/p>/isU",$html,$htmlP);
foreach($htmlP[1] as $k => $v){
preg_match_all("/<span class=\"notranslate\"(.*)><span class=\"google-src-text\"(.*)><span(.*)>(.*)<\/span><\/span> <span(.*)>(.*)<\/span><\/span>/isU",$v,$htmlSpan);
foreach($htmlSpan[4] as $m => $n){
$co[$k]["Zh"] .= $htmlSpan[4][$m];
$co[$k]["En"] .= $htmlSpan[6][$m];
}
}
return $co;
}
function Google_API($word,$mod=""){//$mod=name的时候 翻译标题 返回值为 翻译结果,拼音,英文首字母大写缩写
$word = htmlspecialchars_decode($word);
$TKK = Google_GetTkk();
$Tk = Google_Vq($word,$TKK);
$url="https://translate.google.cn/translate_a/single?client=t&sl=zh-cn&tl=en&hl=en&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&pc=1&otf=1&ssel=5&tsel=5&kc=1&tk=".$Tk."&q=".urlencode($word);
$html = Google_Get($url);
$json=json_decode($html,true);
$translate=$json[0];
foreach($translate as $k => $v){
$data["Zh"] .= $v[1];
$data["En"] .= $v[0];
if(!empty($v[3])){
$PinYin=$v[3];
}
}
if($mod=="name"){
$data["En"]=$data["En"].",".$PinYin.",".Google_Get_Zimu($data["En"]);
}
return $data;
}
//Demo
//$word="八零锦绣俏甜妻";
//$json=Google_API($word,"name");
//print_r($json);
$word="江小荞重生了,重生在不知道的华国村庄,穷乡僻壤,家里人口众多,阴盛阳衰,三个妹妹,江小麦,江小米,江小谷,一家子都是软柿子,被人家捏来揉去的欺负。打到渣爹,翻身做主人。好在江小荞来了,从今天起姐姐妹妹站起来,挺胸抬头吃饱饭,顺带过上幸福生活。那人邪邪一笑,是我早就看中的媳妇,怎么能便宜别人。媳妇儿,碗里来吧!";
$json=Google_API($word);
print_r($json);
//exit();
//文件上传失效了 暂时没有修复,需要的联系我。
//$file="https://yooer.me/zh.php上传文件的地址 或者远程地址 本地地址需要完整路径 或者数据直接提交
//$json=Google($file,2);//mod=1 本地读取 mod=2 远程获取 mod=其他 直接提交
//print_r($json);
// exit();