curl模拟请求常用参数

封装一个curl模拟浏览器请求的函数,如下:
/**
 * curl模拟浏览器请求
 * @param unknown $url        请求的地址
 * @param array $params        请求地址所需要的参数
 * @param string $method     请求的类型
 * @param array $headers    http请求头
 * @return string|mixed
 */
function curlRequest($url, array $params, $method=‘POST‘, array $headers=array())
{
    // 1.初始化一个curl会话资源
    $ch = curl_init();

    // 2.设置curl会话的选项
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);    // 强制使用 HTTP/1.0
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);    // 发起连接前等待超时的时间,如果设置为0,则无限等待
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);    // 设置curl允许执行的最长秒数
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    // 是否将curl_exec()获取的信息返回,而不是直接输出
    curl_setopt($ch, CURLOPT_ENCODING, ‘gzip‘);    // 设置HTTP请求头中"Accept-Encoding: "的值
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);    // 启用时会将服务器返回的"Location: "放在header中递归的返回给服务器
    curl_setopt($ch, CURLOPT_MAXREDIRS, 5);    // 设置HTTP重定向的最大数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);    // 是否需要进行服务端的SSL证书验证
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);    // 是否验证服务器SSL证书中的公用名
    curl_setopt($ch, CURLOPT_HEADER, false);    // 是否抓取头文件的信息
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);        // 设置HTTP请求头
    curl_setopt($ch, CURLINFO_HEADER_OUT, true);

    switch (strtoupper($method)) {
        case ‘POST‘:
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
            break;

        case ‘GET‘:
            $url = "{$url}?" . http_build_query($params);
            break;

        case ‘DELETE‘:
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, ‘DELETE‘);
            $url = "{$url}?" . http_build_query($params);
            break;

        default:
            return ‘invalid request method‘;
    }

    curl_setopt($ch, CURLOPT_URL, $url);    // 设置需要请求的URL地址,也可以在 curl_init()函数中设置

    // 3.执行curl会话
    $response = curl_exec($ch);

    // 4.关闭curl会话,释放资源
    curl_close($ch);

    return $response;
}

函数调用方式如下:
$url = ‘http://demo.dev/test‘;
$params = array(‘id‘=>1,‘name‘=>‘zpt‘);
$res = curlRequest($url,$params);
echo $res;

原文地址:https://www.cnblogs.com/phpper/p/8146008.html

时间: 2024-10-03 08:24:33

curl模拟请求常用参数的相关文章

curl 模拟请求get/post

$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx24a0ef05af955bdd&secret=f721b4d068d74a8a37817707a7cf316b";//支持post/get只需修改参数get/postfunction https_request($url,$data = null,$method="POST"){ 

php curl模拟post请求的例子

curl 在php中要模拟post请求数据提交我们会使用到curl函数,下面我来给大家举几个curl模拟post请求提交数据例子有需要的朋友可参考参考. 注意:curl函数在php中默认是不被支持的,如果需要使用curl函数我们需在改一改你的php.ini文件的设置,找到php_curl.dll去掉前面的";"就行了 例子1 <?php$uri = "http://tanteng.duapp.com/test.php";// 参数数组$data = array

php curl模拟post请求提交数据例子总结

php curl模拟post请求提交数据例子总结 [导读] 在php中要模拟post请求数据提交我们会使用到curl函数,下面我来给大家举几个curl模拟post请求提交数据例子有需要的朋友可参考参考.注意:curl函数在php中默认是不被支持的,如果需要使用curl函数我们需在改一改 在php中要模拟post请求数据提交我们会使用到curl函数,下面我来给大家举几个curl模拟post请求提交数据例子有需要的朋友可参考参考. 注意:curl函数在php中默认是不被支持的,如果需要使用curl函

php curl模拟post请求提交数据

最近在做校园图书馆图书信息的采集程序,既然是图书馆图书的采集,肯定有提交搜索的页面,无非是post提交,让我想到了curl模拟提交,首先通过firebug进行抓包查询下post提交后的格式如下: txtWxlx=CN&hidWxlx=spanCNLx&txtPY=HZ&txtTm=%D2%F4%C0%D6&txtLx=%25&txtSearchType=1&nMaxCount=100&nSetPageSize=10&cSortFld=%D5%

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

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

java如果模拟请求重启路由器(网络爬虫常用),还有java如何下载图片

我们如果在公司或家里使用网络爬虫去抓取自己索要的一些数据的时候,常常对方的网站有defence机制,会给你的http请求返回500错误,只要是相同IP就请求不到数据,这时候我们只能去重启路由器,这样IP地址会改变,网络爬虫就能正常工作了 下面是通过发送Socket请求来模拟路由器的重启指令: protected void rebotadsl() { try { BufferedOutputStream sender = null; String url = baseURL; URL target

关于HttpClient模拟浏览器请求的参数乱码问题解决方案

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/44407297 http://www.llwjy.com/blogdetail/9383e88e4bc7378b8318e15b0ac33559.html 个人博客站已经上线了,网址:www.llwjy.com,欢迎大家吐槽~ -----------------------------------------------------------------------------

模拟请求工具curl的异常处理

日常开发过程中,使用curl进行模拟请求的场景比较多.当跨站请求时,并不能保证其他网站的稳定性.当其他网站无法顺利访问,会影响到当前的业务系统,且不容易排查问题,因此需要作异常处理 . private function curlPost(string $route, array $postData):array{    try {        //发送消息到任务队列        $url = env('API_URL') . $route;        //初始化        $curl

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

每个PHP文件的执行是单线程的,但是php本身也可以用一些别的技术实现多线程并发比如用php-fpm进程,这里用curl模拟多线程发送请求.php的curl多线程是通过不断调用curl_multi_exec来获取内容,这里举一个demo来模拟一次curl多线程并发操作. 1 /** 2 * Subject:php模拟多线程请求curl返回结果 3 * User: luokakale 4 * Date: 2018/11/3 5 * Time: 11:14 6 */ 7 8 //设置缓冲为0(也可以