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实现 使用PHP数组内部指针操作函数
Oct 12 PHP
php下安装配置fckeditor编辑器的方法
Mar 02 PHP
php去除重复字的实现代码
Sep 16 PHP
php实现简单洗牌算法
Jun 18 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
Jul 24 PHP
php微信支付之APP支付方法
Mar 04 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
May 26 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
Aug 12 PHP
关于PHP内置的字符串处理函数详解
Feb 04 PHP
PHP 序列化和反序列化函数实例详解
Jul 18 PHP
thinkPHP5实现的查询数据库并返回json数据实例
Oct 23 PHP
php实现数组中出现次数超过一半的数字的统计方法
Oct 14 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
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
2011/05/07 PHP
PHP中Fatal error session_start()错误解决步骤
2014/08/05 PHP
制作安全性高的PHP网站的几个实用要点
2014/12/30 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
Javascript 按位与赋值运算符 (&=)使用介绍
2014/02/04 Javascript
JavaScript中伪协议 javascript:使用探讨
2014/07/18 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
2017/05/23 Javascript
Vue-cropper 图片裁剪的基本原理及思路讲解
2018/04/17 Javascript
了解重排与重绘
2019/05/29 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
微信小程序scroll-view锚点链接滚动跳转功能
2019/12/12 Javascript
JavaScript编写开发动态时钟
2020/07/29 Javascript
理解Python中函数的参数
2015/04/27 Python
举例区分Python中的浅复制与深复制
2015/07/02 Python
深入讲解Java编程中类的生命周期
2016/02/05 Python
Python语法分析之字符串格式化
2019/06/13 Python
python无序链表删除重复项的方法
2020/01/17 Python
python如何调用百度识图api
2020/09/29 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
医学院护理专业应届生求职信
2013/11/12 职场文书
卫校中专生的自我评价
2014/01/15 职场文书
幼儿园中班教师寄语
2014/04/03 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
小学见习报告
2014/10/31 职场文书
酒店保洁员岗位职责
2015/02/26 职场文书
干部理论学习心得体会
2016/01/21 职场文书
Java实战之用Swing实现通讯录管理系统
2021/06/13 Java/Android