• 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就能看到 你获取到的数据了。

  • 相关阅读:
    Rust-数据类型
    Rust-智能指针
    Rust-使用包、Crate和模块管理不断增长的项目
    Rust-Slice类型
    Rust-引用与借用
    Rust 的核心功能-所有权(ownership)
    How to fix “sudo: command not found error”
    ABC195 F
    CF1501D Two chandeliers【拓展欧几里得+二分】
    CCA的小球【容斥定理】
  • 原文地址:https://www.cnblogs.com/HoverM/p/9259278.html
Copyright © 2020-2023  润新知