php的curl携带header请求头信息实现http访问的方法
发布:smiling 来源: PHP粉丝网 添加日期:2022-04-08 09:25:09 浏览: 评论:0
这篇文章主要介绍了php的curl携带header请求头信息实现http访问的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下。
导读:
curl请求时添加请求头信息可以模拟真人操作,不容易被当成是爬虫机器人(采集),从而可以绕过Incapsula等安全验证机制。
1、首先使用浏览器(示例使用的是火狐浏览器)访问接口网址,使用F12调试,查看请求头信息,如下:
2、实现代码:
- <?php
- /**
- * 开始访问请求
- * @param $url
- * @return bool|string
- */
- function fetch_url($url) {
- $header = FormatHeader($url);
- $useragent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0';
- $timeout= 120;
- $ch = curl_init($url);
- curl_setopt($ch, CURLOPT_FAILONERROR, true);
- //设置请求头信息
- curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
- //不取得返回头信息
- curl_setopt($ch, CURLOPT_HEADER, 0);
- // 关闭https验证
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true );
- curl_setopt($ch, CURLOPT_ENCODING, "" );
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
- curl_setopt($ch, CURLOPT_AUTOREFERER, true );
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout );
- curl_setopt($ch, CURLOPT_TIMEOUT, $timeout );
- curl_setopt($ch, CURLOPT_MAXREDIRS, 10 );
- curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
- $content = curl_exec($ch);
- if(curl_errno($ch))
- {
- echo 'Error:' . curl_error($ch);
- }
- else
- {
- return $content;
- }
- curl_close($ch);
- }
- //添加请求头
- function FormatHeader($url)
- {
- // 解析url
- $temp = parse_url($url);
- $query = isset($temp['query']) ? $temp['query'] : '';
- $path = isset($temp['path']) ? $temp['path'] : '/';
- $header = array (
- "POST {$path}?{$query} HTTP/1.1",
- "Host: {$temp['host']}",
- "Referer: http://{$temp['host']}/",
- "Content-Type: text/xml; charset=utf-8",
- 'Accept: application/json, text/javascript, */*; q=0.01',
- 'Accept-Encoding:gzip, deflate, br',
- 'Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
- 'Connection:keep-alive',
- 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0',
- 'X-Requested-With: XMLHttpRequest',
- );
- return $header;
- }
- ?>
3、调用示例:
- <?php
- //lcg_value() 返回范围为 (0, 1) 的一个伪随机数
- $url="http://www.xxx.com/getdata.php?v=".lcg_value();
- //访问网址
- $html = fetch_url($url);
Tags: curl header请求头信息
- 上一篇:php使用shmop函数创建共享内存减少负载的方法
- 下一篇:最后一页
相关文章
- ·php curl常见错误:SSL错误、bool(false)(2013-11-30)
- ·curl out of memory window下PHP调用curl报内存不够(2013-12-06)
- ·windows 下 php curl 的支持配置方法(2013-12-06)
- ·PHP 利用curl_init发起http请求模仿登录(2014-01-06)
- ·php curl 伪造IP来源程序实现代码(2014-01-07)
- ·php curl 分离header和body信息(2014-01-07)
- ·PHP curl 获取响应的状态实例(2014-01-08)
- ·php curl模块模拟登录后采集页面实例(2014-01-08)
- ·PHP Curl多线程实现原理与实例详解(2014-01-09)
- ·Drupal 通过cURL Post方式发送一个文件(2014-01-10)
- ·php 通过curl post发送json数据实例(2014-01-10)
- ·php用Curl伪造客户端源IP(2014-01-10)
- ·php利用CURL函数登入163邮箱并获取自己的通讯录(2014-06-17)
- ·php中CURL实现多线程的笔记(2014-06-18)
- ·PHP利用Curl模拟登录并获取数据例子(2014-06-21)
- ·php中curl模拟登陆用户百度知道的例子(2014-06-29)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)