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);

到此这篇关于php的curl携带header请求头信息实现http访问的方法的文章就介绍到这了,更多相关php的curl请求头信息实现http访问内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • PHP获取访问页面HTTP状态码的实现代码

    废话不说了直接上代码 核心代码: /** * 获取远程URL的HTTP状态 * * @version 0.0.1 * @Author Chenjl * * @param string $url 远程URL * @param string $data ture[返回HTTP状态数组] | false[返回状态数值] * * @return mixed */ function getHeaders($url,$data=FALSE){ $_headers = get_headers($url,1);

  • PHP CURL中传递cookie的方法步骤

    curl的cookie怎么使用?新手都很头疼的,curl的参数太多了,其中cookie部分就涉及了4个. 当然了,手册上明白写的curl的cookie是3个,但是嘛,不是还有个header的参数嘛,里面可以包含cookie. curl非常的好用.最主要的是要熟悉curl_setopt的用法. curl_setopt ($ch, CURLOPT_COOKIE , $cookie ); 这里的cookie值要用;分开的,而不是用&.也不需要用urlencode编码,当然了,编码了就更好. $cook

  • PHP CURL使用详解

    PHP CURL是一个非常强大的开源库,支持很多协议,包括HTTP.FTP.TELNET等,我们使用它来发送HTTP请求.它给我们带来的好处是可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS.CURL可以根据URL前缀是"HTTP" 还是"HTTPS"自动选择是否加密发送内容. 使用CURL发送请求的基本流程 使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤: 1.初始化连接句柄: 2.设置CURL选项: 3.执行并获取结果: 4

  • 详解php中curl返回false的解决办法

    首先来看一个封装的curl函数 function request_post($url = '', $param = '') { if (empty($url) || empty($param)) { return false; } $postUrl = $url; $curlPost = $param; $curl = curl_init();//初始化curl curl_setopt($curl, CURLOPT_URL,$postUrl);//抓取指定网页 curl_setopt($curl

  • PHP设置images目录不充许http访问的方法

    防盗链的技术已经很普遍了,有些网站不喜欢自己的图片被别的网站直接复制使用,便使用了防盗链的技术,这样别人在直接复制使用网站图片时,图片便会按照程序的设定不显示或显示防盗链等字样. 如今的互联网,采集网站非常多,很多网站都喜欢盗链/盗用别人网站的图片,这样不仅侵犯网权,还导致被盗链的网站消耗大量的流量,给服务器造成比较大的压力,本文章向大家介绍php如何防止图片盗用/盗链的两种方法,需要的朋友可以参考一下. 图片防盗链有什么用? 防止其它网站盗用你的图片,浪费你宝贵的流量.本文章向大家介绍php防

  • PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT

    PHP屏蔽蜘蛛访问代码代码: 常用搜索引擎名与 HTTP_USER_AGENT对应值 百度baiduspider 谷歌googlebot 搜狗sogou 腾讯SOSOsosospider 雅虎slurp 有道youdaobot Bingbingbot MSNmsnbot Alexais_archiver function is_crawler() { $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']); $spiders = array( '

  • php使用curl访问https示例分享

    为方便说明,先上代码吧 复制代码 代码如下: /**  * curl POST  *  * @param   string  url  * @param   array   数据  * @param   int     请求超时时间  * @param   bool    HTTPS时是否进行严格认证  * @return  string  */  function curlPost($url, $data = array(), $timeout = 30, $CA = true){ $cace

  • php的curl携带header请求头信息实现http访问的方法

    导读: curl请求时添加请求头信息可以模拟真人操作,不容易被当成是爬虫机器人(采集),从而可以绕过Incapsula等安全验证机制. 1.首先使用浏览器(示例使用的是火狐浏览器)访问接口网址,使用F12调试,查看请求头信息,如下: 2.实现代码: <?php /** * 开始访问请求 * @param $url * @return bool|string */ function fetch_url($url) { $header = FormatHeader($url); $useragent

  • php查看请求头信息获取远程图片大小的方法分享

    如果要获取远程图片的大小,一种普遍的做法是先将远程图片的内容获取回来,再用strlen计算长度,这种方法需要将图片下载下来,然后才能计算.如果图片很大的话,那么网络传输就要花费不少时间,效率显然低下.笔者提供一个方法来提高效率,主要是利用http的头信息. 当访问网页的时候,服务器会返回请求的头信息,其中Content-Length表示请求的网页内容大小.如果请求的是图片,那么Content-Length就表示图片的大小.根据这个,只需要发送head请求获取返回的头信息就OK了.在php中,可以

  • Django Python 获取请求头信息Content-Range的方法

    request请求头信息的键会加上HTTP_转换成大写存到request.META中 因此你只需要 content_range = request.META['HTTP_CONTENT_RANGE'] 这样就可以获取到Content-Range的信息. django官网的解释: A standard Python dictionary containing all available HTTP headers. Available headers depend on the client and

  • 使用Feign传递请求头信息(Finchley版本)

    目录 Feign传递请求头信息 实现RequestInterceptor接口 注册配置 Feign调用微服务传递header请求头 Feign传递请求头信息 在我之前的文章服务网关Spring Cloud Zuul中,将用户的登录id放在了请求头中传递给内部服务. 但是当内部服务之间存在feign调用时,那么请求头信息会在feign请求的时候传递吗?不会,请求的头信息和请求参数都不会进行传递. 但是我们可以通过通过实现RequestInterceptor接口,完成对所有的Feign请求,传递请求

  • 在AngularJs中设置请求头信息(headers)的方法及不同方法的比较

    在AngularJs中有三种方式可以设置请求头信息: 1.在http服务的在服务端发送请求时,也就是调用 http服务的在服务端发送请求时,也就是调用 http()方法时,在config对象中设置请求头信息:事例如下: $http.post('/somePath' , someData , { headers : {'Authorization' : authToken} }).success(function(data, status, headers, config) { //... }).

  • java swagger ui 添加header请求头参数的方法

    我用到的swagger 主要有三款产品,swagger editor,swagger ui 和swagger codegen. swagger editor:主要是一个本地客户端,用来自己添加api,自己来测试,相当于一个api的可视化测试工具和定义工具吧. swagger ui:主要用户嵌入到项目中,将所有的接口生成一个可视化的页面,方便前后端联调 swagger codegen:主要用于通过swagger来自动生成代码 我用的swagger ui主要在java项目中.将所有的http接口提供

  • php通过获取头信息判断图片类型的方法

    本文实例讲述了php通过获取头信息判断图片类型的方法.分享给大家供大家参考.具体实现方法如下: $filename = '617.gif' ; function pictype ( $file ) { /*$png_header = "/x89/x50/x4e/x47/x0d/x0a/x1a/x0a"; $jpg_header = "/xff/xd8";*/ $header = file_get_contents ( $file , 0 , NULL , 0 , 5

  • spring boot使用拦截器修改请求URL域名 换 IP 访问的方法

    目录 Interceptor 介绍 Interceptor 作用 自定义 Interceptor 案例1 :域名换IP访问 案例2: erverWebExchange通过拦截器修改请求url 案例3: 将请求路径中/idea都去掉 案例4: SpringBoot 利用过滤器Filter修改请求url地址 案例5.拦截器: WebMvcConfigurerAdapter拦截器 结语 Interceptor 介绍 拦截器(Interceptor)同 Filter 过滤器一样,它俩都是面向切面编程——

  • javaweb判断当前请求是否为移动设备访问的方法

    这段时间都是在做pc端的业务,结果经理找到我说,可能要做移动端的应用,后台逻辑还是用我写的逻辑,但是需要改动一些,看看怎么处理. 由于移动端和pc端还是稍微有些区别的,我觉得最好是在一个地儿统一判断,而且不要改动原先的代码,这样可以从一定程度上减少bug的数量.我的想法是首先应该判断当前请求是否为移动端,然后设一个标识到session中,然后就可以随便处理了.不管你是单独处理,还是统一处理,直接读取session就可以做相应的判断了. 我封装成了一个类,现在分享给大家: package com.

  • PHP设置头信息及取得返回头信息的方法

    本文实例讲述了PHP设置头信息及取得返回头信息的方法.分享给大家供大家参考,具体如下: 设置请求的头信息,我们可以用header函数,可以用fsockopen,可以用curl等,本文主要讲的是用curl来设置头信息,并取得返回后的头信息. 一.请求方设置自己的头信息,header.php <?php function FormatHeader($url, $myIp = null,$xml = null) { // 解悉url $temp = parse_url($url); $query =

随机推荐