PHP基于curl实现模拟微信浏览器打开微信链接的方法示例


Posted in PHP onFebruary 15, 2019

本文实例讲述了PHP基于curl实现模拟微信浏览器打开微信链接的方法。分享给大家供大家参考,具体如下:

网络上没有可以直接打开微信的浏览器 但是我们可以模拟浏览器

微信浏览器的HTTP_USER_AGENT

在iPhone下,返回

Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B176 MicroMessenger/4.3.2

在Android下,返回

Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.255

不难发现微信浏览器为 MicroMessenger ,并且有版本号,也可以判断手机类型为iPhone还是Android

php 模拟 微信浏览器 使用如下:

get 方式

function get($url, $referer, $cookie) {
  $header = array();
  $header[] = 'Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*';
  $header[] = 'Connection: Keep-Alive';
  $header[] = 'Accept-Language: zh-cn';
  $header[] = 'Cache-Control: no-cache';
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_HEADER, 1);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B176 MicroMessenger/4.3.2');
  curl_setopt($ch, CURLOPT_REFERER, $referer);
  curl_setopt($ch, CURLOPT_COOKIE, $cookie);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  $result = curl_exec($ch);
  curl_close($ch);
  return $result;
}
echo get('http://wxt.wedoor.com/wxtAction.do?method=showyl&id=f20c503cac9349308c3a87ecbae5908c&scene=1','','');

post方式

function post($url, $data, $referer, $cookie) {
  $header = array();
  $header[] = 'Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*';
  $header[] = 'Connection: Keep-Alive';
  $header[] = 'Accept-Language: zh-cn';
  $header[] = 'Cache-Control: no-cache';
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_HEADER, 1);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.255');
  curl_setopt($ch, CURLOPT_REFERER, $referer);
  curl_setopt($ch, CURLOPT_COOKIE, $cookie);
  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  $result = curl_exec($ch);
  curl_close($ch);
  return $result;
}
echo post('http://wxt.wedoor.com/wxtAction.do?method=showyl&id=f20c503cac9349308c3a87ecbae5908c&scene=1','','','');

如此这般就可以了

如果要做盗链

if(strpos($_SERVER["HTTP_USER_AGENT"],"MicroMessenger"))
  echo "Welcome to wechat word";
else
  echo "http/1.1 401 Unauthorized";

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

PHP 相关文章推荐
PHP中GET变量的使用
Oct 09 PHP
组合算法的PHP解答方法
Feb 04 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
Jun 13 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
ThinkPHP的MVC开发机制实例解析
Aug 23 PHP
nginx+thinkphp下解决不支持pathinfo模式
Jul 01 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
Feb 26 PHP
深入讲解PHP的Yii框架中的属性(Property)
Mar 18 PHP
PHP 绘制网站登录首页图片验证码
Apr 12 PHP
非常经典的PHP文件上传类分享
May 15 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
Nov 21 PHP
PHP简单实现模拟登陆功能示例
Sep 15 PHP
PHP crypt()函数的用法讲解
Feb 15 #PHP
phpinfo无法显示的原因及解决办法
Feb 15 #PHP
实例介绍PHP中zip_open()函数用法
Feb 15 #PHP
PHP echo()函数讲解
Feb 15 #PHP
PHP crc32()函数讲解
Feb 14 #PHP
PHP count_chars()函数讲解
Feb 14 #PHP
PHP让网站移动访问更加友好方法
Feb 14 #PHP
You might like
微信开发之获取JSAPI TICKET
2017/07/07 PHP
Google Suggest ;-) 基于js的动态下拉菜单
2006/10/11 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
nodejs实现获取某宝商品分类
2015/05/28 NodeJs
使用Node.js实现HTTP 206内容分片的教程
2015/06/23 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
AngularJS日程表案例详解
2017/08/15 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
浅谈vue 二级路由嵌套和二级路由高亮问题
2020/08/06 Javascript
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
Python多进程方式抓取基金网站内容的方法分析
2019/06/03 Python
pyqt5移动鼠标显示坐标的方法
2019/06/21 Python
PowerBI和Python关于数据分析的对比
2019/07/11 Python
python matplotlib库绘制散点图例题解析
2019/08/10 Python
python 实现单通道转3通道
2019/12/03 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
利用PyTorch实现VGG16教程
2020/06/24 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
爱游人:Travelliker
2017/09/05 全球购物
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
安全责任协议书
2014/04/21 职场文书
高中生班主任评语
2014/04/25 职场文书
横幅标语大全
2014/06/17 职场文书
法院干警四风问题自我剖析材料
2014/09/29 职场文书
社区文明倡议书
2015/04/28 职场文书
学校运动会开幕词
2016/03/03 职场文书
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang
Python Django获取URL中的数据详解
2021/11/01 Python
vue选项卡切换的实现案例
2022/04/11 Vue.js