php使用curl伪造浏览器访问操作示例


Posted in PHP onSeptember 30, 2019

本文实例讲述了php使用curl伪造浏览器访问操作。分享给大家供大家参考,具体如下:

原理

服务器主要通过User-Agent识别客户端是何种设备

User-Agent是Http协议中的一部分,属于头域的组成部分。基本格式为: 浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识 版本信息。

具体方法如下

/**
 * curl获取数据
 * @param $url
 * @return mixed
 */
function get_url($url)
{
  $ifpost = 0;
  $datafields = '';
  $cookiefile = '';
  $v = false;
  //构造随机ip
  $ip_long = array(
    array('607649792', '608174079'), //36.56.0.0-36.63.255.255
    array('1038614528', '1039007743'), //61.232.0.0-61.237.255.255
    array('1783627776', '1784676351'), //106.80.0.0-106.95.255.255
    array('2035023872', '2035154943'), //121.76.0.0-121.77.255.255
    array('2078801920', '2079064063'), //123.232.0.0-123.235.255.255
    array('-1950089216', '-1948778497'), //139.196.0.0-139.215.255.255
    array('-1425539072', '-1425014785'), //171.8.0.0-171.15.255.255
    array('-1236271104', '-1235419137'), //182.80.0.0-182.92.255.255
    array('-770113536', '-768606209'), //210.25.0.0-210.47.255.255
    array('-569376768', '-564133889'), //222.16.0.0-222.95.255.255
  );
  $rand_key = mt_rand(0, 9);
  $ip= long2ip(mt_rand($ip_long[$rand_key][0], $ip_long[$rand_key][1]));
//模拟http请求header头
  $header = array("Connection: Keep-Alive","Accept: text/html, application/xhtml+xml, */*", "Pragma: no-cache", "Accept-Language: zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.5,en;q=0.3","User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)",'CLIENT-IP:'.$ip,'X-FORWARDED-FOR:'.$ip);
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_HEADER, $v);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  $ifpost && curl_setopt($ch, CURLOPT_POST, $ifpost);
  $ifpost && curl_setopt($ch, CURLOPT_POSTFIELDS, $datafields);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  $cookiefile && curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
  $cookiefile && curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);
  curl_setopt($ch,CURLOPT_TIMEOUT,60); //允许执行的最长秒数
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  $ok = curl_exec($ch);
  curl_close($ch);
  unset($ch);
  return $ok;
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
asp和php下textarea提交大量数据发生丢失的解决方法
Jan 20 PHP
php设计模式 Factory(工厂模式)
Jun 26 PHP
php开启安全模式后禁用的函数集合
Jun 26 PHP
php实现根据url自动生成缩略图的方法
Sep 23 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
May 21 PHP
php上传大文件失败的原因及应对策略
Oct 20 PHP
分享PHP计算两个日期相差天数的代码
Dec 23 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
Jul 01 PHP
php简单计算年龄的方法(周岁与虚岁)
Dec 06 PHP
PHP实现的ID混淆算法类与用法示例
Aug 10 PHP
PHP实现用session来实现记录用户登陆信息
Oct 15 PHP
tp5框架无刷新分页实现方法分析
Sep 26 PHP
laravel-admin 在列表页添加自定义按钮的例子
Sep 30 #PHP
Laravel框架控制器的request与response用法示例
Sep 30 #PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
Sep 30 #PHP
Laravel框架控制器的middleware中间件用法分析
Sep 30 #PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
Sep 30 #PHP
laravel实现登录时监听事件,添加登录用户的记录方法
Sep 30 #PHP
php7下的filesize函数
Sep 30 #PHP
You might like
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
2012/06/07 PHP
php数组(array)输出的三种形式详解
2013/06/05 PHP
destoon二次开发模板及调用语法汇总
2014/06/21 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
2014/07/04 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
Thinkphp 框架扩展之类库扩展操作详解
2020/04/23 PHP
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
jQuery实现选中行变色效果(实例讲解)
2017/07/06 jQuery
Vue精简版风格指南(推荐)
2018/01/30 Javascript
用POSTMAN发送JSON格式的POST请求示例
2018/09/04 Javascript
Vue中的作用域CSS和CSS模块的区别
2018/10/09 Javascript
Vue安装浏览器开发工具的步骤详解
2019/05/12 Javascript
node+vue实现文件上传功能
2020/05/28 Javascript
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
从零学Python之入门(三)序列
2014/05/25 Python
python通过加号运算符操作列表的方法
2015/07/28 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
Python tkinter事件高级用法实例
2018/01/31 Python
Python3实现购物车功能
2018/04/18 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
python 3.6.2 安装配置方法图文教程
2018/09/18 Python
pytorch对可变长度序列的处理方法详解
2018/12/08 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
python pexpect ssh 远程登录服务器的方法
2019/02/14 Python
详解Python3之数据指纹MD5校验与对比
2019/06/11 Python
Python Pandas 获取列匹配特定值的行的索引问题
2019/07/01 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
意大利专业化妆品品牌:KIKO MILANO
2017/02/01 全球购物
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
公司同意接收函
2014/01/13 职场文书
求职简历中自我评价
2014/01/28 职场文书
《赵州桥》教学反思
2014/02/17 职场文书
关于Oracle12C默认用户名system密码不正确的解决方案
2021/10/16 Oracle