• PHP 利用curl 模拟get post 请求


    有的时候想爬取点数据,但是网站做了防护,用file_get_contents的话,就会提示无法读取。所以得想点其他方法了,所以就想到了利用php 的curl 模拟post或者get请求

    首先是模拟get请求(请求https协议接口)

      /**
         * 传入json数据进行HTTP Get请求
         *
         * @param string $url $data_string
         * @return string
         */
        public function http_get($url)
        {
              $curl = curl_init(); // 启动一个CURL会话
                curl_setopt($curl, CURLOPT_URL, $url);
                curl_setopt($curl, CURLOPT_HEADER, 0);
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
                curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);  // 从证书中检查SSL加密算法是否存在
                $tmpInfo = curl_exec($curl);     //返回api的json对象
                //关闭URL请求
                curl_close($curl);
                return $tmpInfo;    //返回json对象
            
        }

    然后就是 模拟post请求(https)

    /**
         * 传入json数据进行HTTP POST请求
         *
         * @param string $url $data_string
         * @return string
         */
        public static function http_post($url,$data_string,$timeout = 60)
        {
            //curl验证成功
            $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_POSTFIELDS,$data_string);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);//// 跳过证书检查 
            curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Content-Type: application/json',
                'Content-Length: ' . strlen($data_string)
            ));
     
            $result = curl_exec($ch);
            if (curl_errno($ch)) {
                print curl_error($ch);
            }
            curl_close($ch);
            return $result;
        }

    调用的话 直接就调用就行例如

    $url="http://www.baidu.com":

    $list=http_get($url);

    然后打印下list就能看到 你获取到的数据了。

  • 相关阅读:
    VS.NET的新用途
    ASP.NET缓存引起的问题
    增加了查看最新回复功能
    高级浏览功能可以使用了
    转载JGTM'2004 [MVP]的文章
    首页文章字数统计改进
    请推荐好的工作流产品
    不错的工具:Reflector for .NET
    寻找文件同步软件
    javascript引起博客园首页不能显示问题说明
  • 原文地址:https://www.cnblogs.com/HoverM/p/9259278.html
Copyright © 2020-2023  润新知