php中转,使用 PHP Curl 做数据中转

使用 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);

示例

// @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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值