使用 PHP Curl 做数据中转
流程
收集头部信息
收集请求数据
转换头部信息为 CURL 头部请求格式
使用 Curl 进行转发
收集 HTTP 头信息
function getAllHeaders() { $headers = []; foreach ($_SERVER as $name => $value) { if (substr($name, 0, 5) == 'HTTP_') { $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; } } return $headers; }
使用 PHP 封装协议获取输入数据
$content = file_get_contents('php://input')
转换头信息为 Curl 请求格式
$headers = getAllHeaders(); $header_joins = [];foreach ($headers as $k => $v) { if ($k == 'X-Pingplusplus-Signature' || $k == 'Content-Type') array_push($header_joins, $k . ': ' . $v); }
使用 Curl 进行转发
function post($url, $headers, $raw_data) { $ch = curl_init(); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); // POST curl_setopt($ch, CURLOPT_POSTFIELDS, $raw_data); // Post Data curl_setopt($ch, CURLOPT_URL, $url);//设置要访问的 URL curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); //模拟用户使用的浏览器 @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1 ); // 使用自动跳转 curl_setopt($ch, CURLOPT_TIMEOUT, 60); //设置超时时间 curl_setopt($ch, CURLOPT_AUTOREFERER, 1 ); // 自动设置Referer curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 收集结果而非直接展示 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // 自定义 Headers $result = curl_exec($ch); curl_close($ch); return $result; }// $result = post($url, $headers, $raw_data);
示例
<?php// @ini_set('display_errors', 1);function getAllHeaders() { $headers = []; foreach ($_SERVER as $name => $value) { if (substr($name, 0, 5) == 'HTTP_') { $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; } } return $headers; } $content = file_get_contents('php://input'); $headers = getAllHeaders(); $header_joins = [];foreach ($headers as $k => $v) { if ($k == 'X-Pingplusplus-Signature' || $k == 'Content-Type') array_push($header_joins, $k . ': ' . $v); } // print_r($header_joins);die();function post($url, $headers, $raw_data) { $ch = curl_init(); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); // POST curl_setopt($ch, CURLOPT_POSTFIELDS, $raw_data); // Post Data curl_setopt($ch, CURLOPT_URL, $url);//设置要访问的 URL curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); //模拟用户使用的浏览器 @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1 ); // 使用自动跳转 curl_setopt($ch, CURLOPT_TIMEOUT, 60); //设置超时时间 curl_setopt($ch, CURLOPT_AUTOREFERER, 1 ); // 自动设置Referer curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 收集结果而非直接展示 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // 自定义 Headers $result = curl_exec($ch); curl_close($ch); return $result; } $result = post('http://rgjc6z4v2x.proxy.qqbrowser.cc/api/pingxx', $header_joins, $content);echo $result;
作者:Dearmadman
链接:https://www.jianshu.com/p/0c8de9dc99ac
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦