1. <?php
  2.  
  3. /**
  4. * @title 封装代理请求
  5. * @author victor
  6. **/
  7. class ApiRequest {
  8.  
  9. /**
  10. * curl提交数据
  11. * @param String $url 请求的地址
  12. * @param Array $header 自定义的header数据
  13. * @param Array $content POST的数据
  14. * @return String
  15. */
  16. public function toCurl($url, $header, $content)
  17. {
  18. $ch = curl_init();
  19. if(substr($url,0,5)=='https'){
  20. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 跳过证书检查
  21. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在
  22. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
  23. }
  24. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  25. curl_setopt($ch, CURLOPT_URL, $url);
  26. curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  27. curl_setopt($ch, CURLOPT_POST, true);
  28. curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($content));
  29. $response = curl_exec($ch);
  30. if($error=curl_error($ch)){
  31. die($error);
  32. }
  33. curl_close($ch);
  34. return $response;
  35. }
  36.  
  37. /**
  38. * @desc GET请求
  39. **/
  40. public function curl_get($url, array $params = array(), $timeout = 5)
  41. {
  42. $ch = curl_init();
  43. curl_setopt($ch, CURLOPT_URL, $url);
  44. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  45. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  46. $file_contents = curl_exec($ch);
  47. curl_close($ch);
  48. return $file_contents;
  49. }
  50.  
  51. /**
  52. * @desc POST请求
  53. **/
  54. public function curl_post($url, array $params = array(), $timeout)
  55. {
  56. $ch = curl_init();//初始化
  57. curl_setopt($ch, CURLOPT_URL, $url);//抓取指定网页
  58. curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
  59. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
  60. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  61. curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
  62. curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
  63. $data = curl_exec($ch);//运行curl
  64. curl_close($ch);
  65. return ($data);
  66. }
  67.  
  68. /**
  69. * @desc https 请求
  70. **/
  71. public function curl_get_https($url)
  72. {
  73. $ch = curl_init();
  74. curl_setopt($ch, CURLOPT_URL, $url);
  75. curl_setopt($ch, CURLOPT_HEADER, false);
  76. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  77. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  78. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.1 Safari/537.11');
  79. $res = curl_exec($ch);
  80. $rescode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  81. curl_close($ch);
  82. return $res;
  83. }
  84. }
  85. ?>

调用:

  1. public function proxyTest()
  2. {
  3. $ApiReq = new ApiRequest();
  4.  
  5. //该网站的接口地址;
  6. $url = 'https://www.xxx.com/ajax/fx.do';
  7.  
  8. //模拟header内容
  9. $header = array(
  10. 'Host: www.domain.com',
  11. 'Origin: https://www.domain.com',
  12. 'Referer: https://www.domain.com/',
  13. 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
  14. 'X-Requested-With: XMLHttpRequest'
  15. );
  16. // post请求参数
  17. $content = array();
  18.  
  19. //curl模拟提交
  20. $response = $ApiReq -> toCurl($url, $header, $content);
  21. $response = json_decode($response,true);
  22. return $response;
  23. }

php封装curl,模拟POST和GET请求HTTPS请求的更多相关文章

  1. curl wget 不验证证书进行https请求【转】

    $ wget 'https://x.x.x.x/get_ips' --no-check-certificate $ curl 'https://x.x.x.x/get_ips' -k 转自 curl ...

  2. Linux 下curl模拟Http 的get or post请求

    一.get请求 curl "http://www.baidu.com"  如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地 curl -i "http:// ...

  3. curl请求https请求

    function curl_https($url,$data){ $ch = curl_init (); curl_setopt ( $ch, CURLOPT_URL, $url ); curl_se ...

  4. PHP封装curl的调用接口及常用函数

    <?php /** * @desc 封装curl的调用接口,post的请求方式 */ function doCurlPostRequest($url, $requestString, $time ...

  5. vue axios 请求 https 的特殊处理

    最近遇到自签发的CA证书,在前端axios请求https请求时,无法自动加载证书. 解决方法:将无法加载的请求在浏览器新窗口手动加载,选择继续连接. 重新加载,问题解决. 根本原因:因为自签发证书,浏 ...

  6. curl模拟请求常用参数

    封装一个curl模拟浏览器请求的函数,如下: /** * curl模拟浏览器请求 * @param unknown $url 请求的地址 * @param array $params 请求地址所需要的 ...

  7. php curl模拟post请求提交数据样例总结

    在php中要模拟post请求数据提交我们会使用到curl函数,以下我来给大家举几个curl模拟post请求提交数据样例有须要的朋友可參考參考.注意:curl函数在php中默认是不被支持的,假设须要使用 ...

  8. 【转载】curl 模拟 GET\POST 请求,curl查看响应头 以及 curl post 上传文件

    补充说明:curl查看响应头 curl -I "http://www.baidu.com"HTTP/1.1 200 OK #HTTP协议 HTTP 返回码Server: Tengi ...

  9. php使用curl模拟多线程发送请求

    每个PHP文件的执行是单线程的,但是php本身也可以用一些别的技术实现多线程并发比如用php-fpm进程,这里用curl模拟多线程发送请求.php的curl多线程是通过不断调用curl_multi_e ...

随机推荐

  1. opencv学习之路(29)、轮廓查找与绘制(八)——轮廓特征属性及应用

    一.简介 HSV颜色空间(hue色调,saturation饱和度,value亮度) 二.HSV滑动条 #include "opencv2/opencv.hpp" #include ...

  2. 设计的一些kubernetes面试题目

    这几个月参与了几场面试,设计了多道面试题,觉得可以综合考察应聘人对kubernetes的掌握情况.在这里分享下,供应聘人自查以及其他面试官参考. 这些面试题的设计初衷并不是考察kubernetes的使 ...

  3. 登录获取session

  4. 在Heroku上免费部署ASP.NET Core(使用Docker和CircleCI)

    创建 ASP.NET Core应用 使用命令行即可创建一个模板项目 dotnet new webapi 完整代码 https://github.com/Ibro/AspNetCoreHerokuDoc ...

  5. 运行python “没有那个文件或目录3” 或 “/usr/local/bin/python3^M: bad interpreter: 没有那个文件或目录” 错误

    原因 如果使用的是#!/usr/local/bin/python3这种方式,就会出现 “/usr/local/bin/python3^M: bad interpreter: 没有那个文件或目录” 错误 ...

  6. Lombok之使用详解

    前言 在Java中,封装是一个非常好的机制,最常见的封装莫过于get,set方法了,无论是Intellij idea 还是Eclipse,都提供了快速生成get,set方法的快捷键,使用起来很是方便, ...

  7. T57274 黑暗城堡

    传送门 思路: 先求出各个点到 1 的最短路径.分别用两个数组将最短路径记录下来(一个要用来排序).按排序后的 dis 值从小到大枚举各点加入树有多少种方案,最后根据乘法原理把各个点的方案数乘起来就是 ...

  8. java导出excel 浏览器直接下载或者或以文件形式导出

    /** * excel表格直接下载 */ public static void exportExcelByDownload(HSSFWorkbook wb,HttpServletResponse ht ...

  9. centos7中bash: maven: 未找到命令... 解决办法

    安装了maven,但在执行mvn -v或maven-versions时提示bash: maven: 未找到命令... 应该是环境变量出错,把MAVEN_HOME的路径换到PATH上就可以了,如下: e ...

  10. Java8:Lambda表达式增强版Comparator和排序

    1.概述 在这篇教程里,我们将要去了解下即将到来的JDK 8(译注,现在JDK 8已经发布了)中的Lambda表达式——特别是怎样使用它来编写Comparator和对集合(Collection)进行排 ...