0 评论

0 收藏

分享

JSON解析接口套娃,可以随意调用需授权IP或域名的JSON接口

如果有个JSON接口需授权IP或域名使用,那就给它套个娃,然后就可随意调用,也可以自定义返回自己想要的内容,废话不多说,代码如下:


一个娃:
  1. <?php

  2. header("content-type:application/json;charset=utf8");

  3. $url = $_GET['url'];
  4. if($_GET['url']==''){
  5.     $arr = [
  6.         'code' => 404,
  7.         'msg' => '缺少URL',
  8.         'from' => $_SERVER['HTTP_HOST']
  9.         ];
  10.     die(json_encode($arr, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
  11. }

  12. $Api=''; //JSON接口
  13. $jiexi = $Api.$url;
  14. $html = httpget($jiexi);
  15. $json = json_decode($html, true);
  16. $vurl=$json['url'];
  17. if($vurl ==''||$vurl ==null){
  18.     $arr = [
  19.         'code' => 100,
  20.         'msg' => '解析失败',
  21.         'link' => $url,
  22.         'from' => $_SERVER['HTTP_HOST']
  23.         ];
  24.     die(json_encode($arr, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
  25. }
  26. $arr = [
  27.     'code' => 200,
  28.     'msg' => '解析成功',
  29.     'url' => $vurl,
  30.     'link' => $url,
  31.     'from' => $_SERVER['HTTP_HOST']
  32.     ];
  33. die(json_encode($arr, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));

  34. function httpget($url, $timeout = 10)
  35. {
  36.     $ch = curl_init();                                                      //初始化 curl
  37.     curl_setopt($ch, CURLOPT_URL, $url);                                    //要访问网页 URL 地址
  38.     curl_setopt($ch, CURLOPT_NOBODY, false);                                //设定是否输出页面内容
  39.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                         //返回字符串,而非直接输出到屏幕上
  40.     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, false);                        //连接超时时间,设置为 0,则无限等待
  41.     curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);                            //数据传输的最大允许时间超时,设为一小时
  42.     curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);                       //HTTP验证方法
  43.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);                        //不检查 SSL 证书来源
  44.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);                        //不检查 证书中 SSL 加密算法是否存在
  45.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);                         //跟踪爬取重定向页面
  46.     curl_setopt($ch, CURLOPT_AUTOREFERER, true);                            //当Location:重定向时,自动设置header中的Referer:信息
  47.     curl_setopt($ch, CURLOPT_ENCODING, '');                                 //解决网页乱码问题
  48.     curl_setopt($ch, CURLOPT_REFERER, $_SERVER['HTTP_REFERER']);
  49.     curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  50.    
  51.     $httpheaders = array();
  52.     $httpheaders[] = "CLIENT-IP: {$_SERVER['HTTP_CLIENT_IP']}";
  53.     $httpheaders[] = "X-FORWARDED-FOR: {$_SERVER['HTTP_X_FORWARDED_FOR']}";
  54.     curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheaders);
  55.    
  56.     $data = curl_exec($ch);                                                 //运行 curl,请求网页并返回结果
  57.     curl_close($ch);                                                        //关闭 curl
  58.     return $data;
  59. }

  60. ?>
复制代码

多个娃:
  1. <?php

  2. //JSON格式化
  3. header("content-type:application/json;charset=utf8");

  4. //当URL为空时返回内容
  5. $url = $_GET['url'];
  6. if($_GET['url'] == '') {
  7.     $arr = [
  8.         'code' => 404,
  9.         'msg' => '缺少URL!',
  10.         'from' => $_SERVER['HTTP_HOST']
  11.         ];
  12.     die(json_encode($arr, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
  13. }

  14. $json1 = ''; //接口1

  15. $json2 = ''; //接口2

  16. $json3 = ''; //接口3

  17. $json4 = ''; //接口4

  18. $json5 = ''; //接口5

  19. //接口轮询
  20. $jiexi = $json1.$url;
  21. $html = httpget($jiexi);
  22. $data = json_decode($html, true);
  23. if ($data['url'] == '' || $data['url'] == null) {
  24.     $jiexi = $json2.$url;
  25.     $html = httpget($jiexi);
  26.     $data = json_decode($html, true);
  27. }
  28. if ($data['url'] == '' || $data['url'] == null) {
  29.     $jiexi = $json3.$url;
  30.     $html = httpget($jiexi);
  31.     $data = json_decode($html, true);
  32. }
  33. if ($data['url'] == '' || $data['url'] == null) {
  34.     $jiexi = $json4.$url;
  35.     $html = httpget($jiexi);
  36.     $data = json_decode($html, true);
  37. }
  38. if ($data['url'] == '' || $data['url'] == null) {
  39.     $jiexi = $json5.$url;
  40.     $html = httpget($jiexi);
  41.     $data = json_decode($html, true);
  42. }
  43. if ($data['url'] == '' || $data['url'] == null) {
  44.     $arr = [
  45.         'code' => 100,
  46.         'msg' => '解析失败',
  47.         'link' => $url,
  48.         'from' => $_SERVER['HTTP_HOST']
  49.         ];
  50.     die(json_encode($arr, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
  51. }

  52. $arr = [
  53.     'code' => 200,
  54.     'msg' => '解析成功',
  55.     'url' => $data['url'],
  56.     'link' => $url,
  57.     'from' => $_SERVER['HTTP_HOST']
  58.     ];
  59. die(json_encode($arr, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));

  60. function httpget($url, $timeout = 5)
  61. {
  62.     $ch = curl_init();                                                      //初始化 curl
  63.     curl_setopt($ch, CURLOPT_URL, $url);                                    //要访问网页 URL 地址
  64.     curl_setopt($ch, CURLOPT_NOBODY, false);                                //设定是否输出页面内容
  65.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                         //返回字符串,而非直接输出到屏幕上
  66.     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, false);                        //连接超时时间,设置为 0,则无限等待
  67.     curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);                            //数据传输的最大允许时间超时,设为一小时
  68.     curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);                       //HTTP验证方法
  69.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);                        //不检查 SSL 证书来源
  70.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);                        //不检查 证书中 SSL 加密算法是否存在
  71.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);                         //跟踪爬取重定向页面
  72.     curl_setopt($ch, CURLOPT_AUTOREFERER, true);                            //当Location:重定向时,自动设置header中的Referer:信息
  73.     curl_setopt($ch, CURLOPT_ENCODING, '');                                 //解决网页乱码问题
  74.     curl_setopt($ch, CURLOPT_REFERER, $_SERVER['HTTP_REFERER']);
  75.     curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  76.    
  77.     $httpheaders = array();
  78.     $httpheaders[] = "CLIENT-IP: {$_SERVER['HTTP_CLIENT_IP']}";
  79.     $httpheaders[] = "X-FORWARDED-FOR: {$_SERVER['HTTP_X_FORWARDED_FOR']}";
  80.     curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheaders);
  81.    
  82.     $data = curl_exec($ch);                                                 //运行 curl,请求网页并返回结果
  83.     curl_close($ch);                                                        //关闭 curl
  84.     return $data;
  85. }

  86. ?>
复制代码

while循环:
  1. <?php

  2. //JSON格式化
  3. header("content-type:application/json;charset=utf8");

  4. //当URL为空时返回内容
  5. $url = $_GET['url'];
  6. if($_GET['url'] == '') {
  7.     $arr = [
  8.         'code' => 404,
  9.         'msg' => '缺少URL!',
  10.         'from' => $_SERVER['HTTP_HOST']
  11.         ];
  12.     die(json_encode($arr, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
  13. }

  14. $json = array(
  15.     '',
  16.     '',
  17.     '',
  18.     '',
  19.     '',
  20.     ); //接口

  21. //接口轮询
  22. $num = 0;
  23. $jiexi = $json[$num].$url;
  24. $html = httpget($jiexi);
  25. $data = json_decode($html, true);

  26. while ($data['url'] == '' || $data['url'] == null) {
  27.     $jiexi = $json[$num+1].$url;
  28.     $html = httpget($jiexi);
  29.     $data = json_decode($html, true);
  30.     $num = $num + 1;
  31.     if ($num >= count($json)) {
  32.         break;
  33.     }
  34. }

  35. if ($data['url'] == '' || $data['url'] == null) {
  36.     $arr = [
  37.         'code' => 100,
  38.         'msg' => '解析失败',
  39.         'link' => $url,
  40.         'from' => $_SERVER['HTTP_HOST']
  41.         ];
  42.     die(json_encode($arr, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
  43. }
  44. else {
  45.     $arr = [
  46.         'code' => 200,
  47.         'msg' => '解析成功',
  48.         'url' => $data['url'],
  49.         'link' => $url,
  50.         'from' => $_SERVER['HTTP_HOST']
  51.         ];
  52.     die(json_encode($arr, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
  53. }

  54. function httpget($url, $timeout = 3)
  55. {
  56.     $ch = curl_init();                                                      //初始化 curl
  57.     curl_setopt($ch, CURLOPT_URL, $url);                                    //要访问网页 URL 地址
  58.     curl_setopt($ch, CURLOPT_NOBODY, false);                                //设定是否输出页面内容
  59.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                         //返回字符串,而非直接输出到屏幕上
  60.     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, false);                        //连接超时时间,设置为 0,则无限等待
  61.     curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);                            //数据传输的最大允许时间超时,设为一小时
  62.     curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);                       //HTTP验证方法
  63.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);                        //不检查 SSL 证书来源
  64.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);                        //不检查 证书中 SSL 加密算法是否存在
  65.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);                         //跟踪爬取重定向页面
  66.     curl_setopt($ch, CURLOPT_AUTOREFERER, true);                            //当Location:重定向时,自动设置header中的Referer:信息
  67.     curl_setopt($ch, CURLOPT_ENCODING, '');                                 //解决网页乱码问题
  68.     curl_setopt($ch, CURLOPT_REFERER, $_SERVER['HTTP_REFERER']);
  69.     curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  70.    
  71.     $httpheaders = array();
  72.     $httpheaders[] = "CLIENT-IP: {$_SERVER['HTTP_CLIENT_IP']}";
  73.     $httpheaders[] = "X-FORWARDED-FOR: {$_SERVER['HTTP_X_FORWARDED_FOR']}";
  74.     curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheaders);
  75.    
  76.     $data = curl_exec($ch);                                                 //运行 curl,请求网页并返回结果
  77.     curl_close($ch);                                                        //关闭 curl
  78.     return $data;
  79. }

  80. ?>
复制代码


回复

举报

全部回复
暂无回帖,快来参与回复吧
admin
管理员
主题 27
回复 0
粉丝 0
热点排行