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;
php中转,使用 PHP Curl 做数据中转相关推荐
- 建立数据中转服务器的详细方法
随着互联网应用的飞速发展,互联网给人们的生活带来了极大的便利.然而互联网暗藏的风险也如悬在头顶的利剑,随时可能带来致命的伤害.因此,即便是今天,依然有许多涉密单位和网络,既存在与互联网交换数据的实际需 ...
- 某APP安全检测 (360脱壳+算法分析+数据中转注入)
https://www.t00ls.net/articles-45803.html 最近对某一APP进行安全检测,整个过程花费几天时间,最耗时的就是写中转脚本实现数据的自动加密解密过程,而且过程中遇到 ...
- 你的报表工具会做数据准备吗 ——报表开发中的深层次问题
前言 现在企业的报表开发大部分都使用报表工具完成,成熟的报表工具提供了丰富的显示设置.图表类型.导出打印等功能可以简化报表开发,非常方便.但在实际报表开发中还是经常碰到一些非常棘手的深层次问题,即使是 ...
- 如何用curl做PUT请求?
本文翻译自:How to do a PUT request with curl? 如何使用curl测试RESTful PUT(或DELETE)方法? #1楼 参考:https://stackoom.c ...
- GAN作用——在我做安全的看来,就是做数据拟合、数据增强
from:https://www.zhihu.com/question/56171002/answer/155777359 GAN的作用,也就是为什么GAN会火了(有部分原因可能是因为Lecun的赞赏 ...
- python代码示例图形-纯干货:手把手教你用Python做数据可视化(附代码)
原标题:纯干货:手把手教你用Python做数据可视化(附代码) 导读:制作提供信息的可视化(有时称为绘图)是数据分析中的最重要任务之一.可视化可能是探索过程的一部分,例如,帮助识别异常值或所需的数据转 ...
- python与excel做数据可视化-python做可视化数据分析,究竟怎么样?
Python做可视化数据分析也是可以的,只是对比起来专业的可视化工具有些得不应手,做出来的图可能不太美观.Python用来处理数据,用来分析绝对可以.我觉得想要可视化可以使用专门的可视化工具. 不过, ...
- mysql errno : 1146_MySQL_MySQL复制出错 Last_SQL_Errno:1146的解决方法,背景:我们在做数据迁移或者 - phpStudy...
MySQL复制出错 Last_SQL_Errno:1146的解决方法 背景:我们在做数据迁移或者拆分的时候,使用Tablespace transcation 这种解决方案时,很有可能就会遇到 从库复制 ...
- echarts迁徙图 vue_vue中高德搭配echarts做数据迁徙流线图
前言 此系列共分为以下几篇 <vue中高德地图的使用> <vue中基于高德的多行政区域覆盖> <vue中高德搭配echarts做数据迁徙流线图> (本篇) 本篇效果 ...
最新文章
- cpu满了卡住 linux_Linux系统中CPU占用率较高问题排查思路与解决方法
- mybatis insert 返回主键_面试准备季——MyBatis 面试专题(含答案)
- [MATLAB粒子模拟]Energy Vx(X) Vy(X) Vz(X)
- 可迭代协议与for-of循环
- ubuntu下安装minicom
- php fsockopen socket,PHP利用socket(fsockopen)的简单示例
- 面向对象:类的定义和使用
- django mysql数据同步_[django同步数据库]Django去操作已经存在数据的数据库
- PAT乙级(1033 旧键盘打字)
- texstudio自动拼写检测_飞桨PaddleDetection物体检测统一框架详解
- C语言库函数的哈希表使用方法
- linux 配置软件安装源
- JAVA操作docx文档
- 贴片电阻常见的规格封装和尺寸
- 填坑Ⅰ | 简单的数据结构
- 数据脱敏 Data Masking
- 关于RPC框架封装时ThreadPool的选型和设计
- 基于hadoop下的使用map reduce分布式系统的高考高频词汇统计
- Matlab 绘制双纵轴图
- C++ Primer Plus 编程练习3
热门文章
- 学习笔记 mysql_MySQL 学习笔记
- vba mysql odbc_使用VBA+ODBC+MySQL实现Excel网络版
- linux文件系统叫什么,【整理】什么是根文件系统(rootfs=Root Fils System)
- YYDS 的 IDEA插件,没装上的安排起来!
- 在人脸识别的时候,一定要穿上衣服啊!
- 蚂蚁金服面试3+2次,最终有惊无险通过!
- 如何避免死锁,我们有什么套路可循?
- 来自95后的天池中间件大赛总结
- mysql workbench pdm_MySQL Workbench
- mysql-索引-笔记