
GraphQL API渗透测试指南
官网地址:百度翻译API开放平台https://fanyi-api.baidu.com/
其实也没啥阐述的,就是通过通过url链接去请求到一个json字符串,而我们需要把需要以正确的方式将我们的待翻译参数以及身份信息,按照POST请求的方式加在链接中。
这里是官方给的一个例子(很关键):
生成签名sign
拼接完整请求:
http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4
1)MD5加密
$params['sign'] = md5($appid.$word.$salt.'yjNRQdGS6iPEf6cfS2LB');
这行代码就是把我们需要加密的内容拼接起来,加密之后会生成一个32位的字符串,这就是我们的签名信息了。
2)url请求(cURL 函数)
$ch = curl_init();
上面的代码是 初始化一个新的会话,返回一个cURL句柄,供curl_setopt(), curl_exec()和curl_close() 函数使用。如果提供了uRL参数,CURLOPT_URL 选项将会被设置成这个值。你也可以使用curl_setopt()函数手动地设置这个值。例如:
curl_setopt($ch,CURLOPT_URL,$url);
bool curl_setopt ( resource $ch , int $option , mixed $value )
curl_setopt_array — 为 cURL 传输会话批量设置选项。
参数:
ch
由 curl_init() 返回的 cURL 句柄。
option
需要设置的CURLOPT_XXX选项。
value
将设置在option选项上的值。
$result=curl_exec($ch);
curl_close($ch);
上面的代码是拿回我们的结果。并且关闭链接。
$callRet = json_decode($result, true);
解析json,才能显示中文。
拼接参数的代码:
foreach ($params as $key => $value) {
$querySign .= $key . '=' . $value . '&';
//echo $querySign."<br/>";
}
<?php
/**
* @desc 百度文档翻译服务接口
* 计数服务接口校验同理,完整文档参考:https://api.fanyi.baidu.com/doc/27
* @date 2022-04-25
* @author @勇敢di牛牛
*/
$word = 'brave,ox ,ox ';
$appid = '20220424001188633'; //你自己的Appid
$salt = '1435660288'; //随机数
$params = array(
'appid' => $appid, //你的appid
'from' => 'en',
'to' => 'zh',
'salt' => '1435660288',//10位随机数字,你也可以用10位时间戳
'q' => $word,
);
$seckey = 'yjNRQdGS6iPEf6cfS2CC'; //你的密钥
ksort($params);
$querySign = '';
$params['sign'] = md5($appid.$word.$salt.$seckey);
foreach ($params as $key => $value) {
$querySign .= $key . '=' . $value . '&';
//echo $querySign."<br/>";
}
$url = 'http://fanyi-api.baidu.com/api/trans/vip/translate?';
//$url = "$url$querySign";
echo $url;
$header = array(
'Content-Type' => 'application/x-www-form-urlencoded',
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$querySign);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result=curl_exec($ch);
curl_close($ch);
$callRet = json_decode($result, true);
//$string = utf8_decode($string);
print_R($callRet);
//pring_R($result);
?>
本文章转载微信公众号@PHP大神
GraphQL API渗透测试指南
Python + BaiduTransAPI :快速检索千篇英文文献(附源码)
掌握ChatGPT API集成的方便指南
node.js + express + docker + mysql + jwt 实现用户管理restful api
nodejs + mongodb 编写 restful 风格博客 api
表格插件wpDataTables-将 WordPress 表与 Google Sheets API 连接
手把手教你用Python和Flask创建REST API
使用 Django 和 Django REST 框架构建 RESTful API:实现 CRUD 操作
ASP.NET Web API快速入门介绍