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

php中转,使用 PHP Curl 做数据中转相关推荐

  1. 建立数据中转服务器的详细方法

    随着互联网应用的飞速发展,互联网给人们的生活带来了极大的便利.然而互联网暗藏的风险也如悬在头顶的利剑,随时可能带来致命的伤害.因此,即便是今天,依然有许多涉密单位和网络,既存在与互联网交换数据的实际需 ...

  2. 某APP安全检测 (360脱壳+算法分析+数据中转注入)

    https://www.t00ls.net/articles-45803.html 最近对某一APP进行安全检测,整个过程花费几天时间,最耗时的就是写中转脚本实现数据的自动加密解密过程,而且过程中遇到 ...

  3. 你的报表工具会做数据准备吗 ——报表开发中的深层次问题

    前言 现在企业的报表开发大部分都使用报表工具完成,成熟的报表工具提供了丰富的显示设置.图表类型.导出打印等功能可以简化报表开发,非常方便.但在实际报表开发中还是经常碰到一些非常棘手的深层次问题,即使是 ...

  4. 如何用curl做PUT请求?

    本文翻译自:How to do a PUT request with curl? 如何使用curl测试RESTful PUT(或DELETE)方法? #1楼 参考:https://stackoom.c ...

  5. GAN作用——在我做安全的看来,就是做数据拟合、数据增强

    from:https://www.zhihu.com/question/56171002/answer/155777359 GAN的作用,也就是为什么GAN会火了(有部分原因可能是因为Lecun的赞赏 ...

  6. python代码示例图形-纯干货:手把手教你用Python做数据可视化(附代码)

    原标题:纯干货:手把手教你用Python做数据可视化(附代码) 导读:制作提供信息的可视化(有时称为绘图)是数据分析中的最重要任务之一.可视化可能是探索过程的一部分,例如,帮助识别异常值或所需的数据转 ...

  7. python与excel做数据可视化-python做可视化数据分析,究竟怎么样?

    Python做可视化数据分析也是可以的,只是对比起来专业的可视化工具有些得不应手,做出来的图可能不太美观.Python用来处理数据,用来分析绝对可以.我觉得想要可视化可以使用专门的可视化工具. 不过, ...

  8. mysql errno : 1146_MySQL_MySQL复制出错 Last_SQL_Errno:1146的解决方法,背景:我们在做数据迁移或者 - phpStudy...

    MySQL复制出错 Last_SQL_Errno:1146的解决方法 背景:我们在做数据迁移或者拆分的时候,使用Tablespace transcation 这种解决方案时,很有可能就会遇到 从库复制 ...

  9. echarts迁徙图 vue_vue中高德搭配echarts做数据迁徙流线图

    前言 此系列共分为以下几篇 <vue中高德地图的使用> <vue中基于高德的多行政区域覆盖> <vue中高德搭配echarts做数据迁徙流线图> (本篇) 本篇效果 ...

最新文章

  1. 如何实现后台向前台传数据
  2. 春泥计算机科技怎么样,【我最喜爱的教师班主任】李喜秋:化作春泥更护花
  3. python虚拟环境中文件分部_Python之虚拟环境管理
  4. 拦截器,过滤器,监听器原理
  5. 解决Django 忘记超级管理员密码 重设密码登录教程
  6. 最详细的PCL编译安装流程
  7. MathType中如何快速输入空心字母
  8. CISCO基础之局域网交换机配置
  9. ImportError: No module named ‘keras_contrib‘
  10. php时间变时间戳,php 时间如何转换为时间戳
  11. 23种设计模式——适配器模式
  12. 关于RS485的使用
  13. oc引导windows蓝屏_电脑蓝屏你别怕,黑客教你代码查看问题
  14. Oracle中to_date函数用法
  15. 二项式系数表--杨辉三角形
  16. iPhone白苹果修复工具
  17. 本地如何内网穿透映射外网
  18. Binary Knapsack (BKP) Problem 是什么
  19. 数学不行计算机选什么专业好,数学差合适什么专业能学计算机吗?对数学要求低的专业有哪些...
  20. 盘古开源:大数据赋能业务运营,自主研发实现新突破

热门文章

  1. 和php工具箱一样的,将php工具箱或其它类似工具正确安装好,并写出安装步骤与注意事项...
  2. Centos 7 添加新磁盘
  3. 58一面:Redis数据更新,是先更新数据库还是先更新缓存?
  4. 皮一皮:到底是土还是士...
  5. 因退休太无聊,Python创始人加入微软!
  6. 你如果只是一直囤干货,那永远不可能进步
  7. wpf中内容包含在border中_WPF:点击后聚焦边框(WPF: Focus border after click)
  8. opencv 白平衡
  9. error C2039: IsOutRange
  10. pytorch cross_entropy