概要
现在有一个域名:api.qzxdp.cn 我需要调用其域名下的两个接口:https://api.qzxdp.cn/api/auth 和 https://api.qzxdp.cn/api/update 我知道出参结构,但是没有授权参数,希望能绕过授权,直接给我返回成功。则可以通过在本地模拟域名搭建一个站点,最终只要能将接口调用通过即可。
准备
环境:linux服务器+nginx+php 有一个index.php文件内容如下:
<?php
$url = $_SERVER['REQUEST_URI'];
function getRandom($length) {
$characters = 'abcdefghijklmnopqrstuvwxyz1234567890';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$index = rand(0, strlen($characters) - 1);
$randomString .= $characters[$index];
}
return $randomString;
}
function generate_randstr($url) {
$key = strrev(md5($url));
$num1 = rand(70,99);
$num1r = strrev(strval($num1));
$num2 = rand(70,99);
$num2r = strrev(strval($num2));
$keystr = substr_replace($key,getRandom(3),$num1-69,0);
$randstr = getRandom(3).$num1r.getRandom(rand(5,10)).$keystr.getRandom(100-$num2).$num2r;
return $randstr;
}
header('Content-Type: application/json; charset=UTF-8');
if(strpos($url, '/api/auth') !== false){
$time = time();
$token = md5(uniqid(mt_rand(), true) . microtime());
$randstr = generate_randstr($_POST['url']);
$sign = md5($randstr.$time.$token.'ok');
$data = ['error'=>true, 'error_code'=>0, 'msg'=>'', 'time'=>$time, 'token'=>$token, 'randstr'=>$randstr, 'code'=>base64_encode('恭喜您,授权验证成功'), 'v2'=>['product'=>'zibll_theme', 'url'=>$_POST['url'], 'code'=>'', 'email'=>$_POST['email'], 'version'=>$_POST['version'], 'K_V'=>2], 'sign'=>$sign];
echo json_encode($data);
}
elseif(strpos($url, '/api/update') !== false){
$version = $_POST['version'];
$data = ['result'=>false, 'aut_error'=>false, 'msg'=>'暂无更新,您当前的版本已是最新版', 'version'=>$version];
echo serialize($data);
}
配置host
修改 /etc/hosts 文件添加如下配置
127.0.0.1 api.qzxdp.cn
效果如下
使用nginx搭建站点
配置如下:
server {
listen 443 ssl;
server_name api.qzxdp.cn;
root /u01/tool/wp/nginx/html;
index index.php index.html;
ssl_certificate /u01/tool/wp/nginx/ssl/domain.crt;
ssl_certificate_key /u01/tool/wp/nginx/ssl/domain_nopass.key;
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?$1 last; break;
}
}
location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
其中 “root /u01/tool/wp/nginx/html;” 将index.php 放入此目录下,证书就自己生成一个接口,如果不会可以留言我帮大家生成。 配置完成以后,启动nginx,在本机直接调用接口试试效果
没有回复内容