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分页函数
Oct 09 PHP
php5 and xml示例
Nov 22 PHP
php+javascript的日历控件
Nov 19 PHP
php面向对象中static静态属性和静态方法的调用
Feb 08 PHP
PHP 实现的将图片转换为TXT
Oct 21 PHP
thinkphp3.x中cookie方法的用法分析
May 19 PHP
PHP单态模式简单用法示例
Nov 16 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
May 05 PHP
PHP memcache在微信公众平台的应用方法示例
Sep 13 PHP
PHP有序表查找之插值查找算法示例
Feb 10 PHP
PHP设计模式之装饰器模式定义与用法简单示例
Aug 13 PHP
Yaf框架封装的MySQL数据库操作示例
Mar 06 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抓即时股票信息
2006/10/09 PHP
JQuery扩展插件Validate 1 基本使用方法并打包下载
2011/09/05 Javascript
得到jQuery detach()后节点中的某个值实现代码
2013/02/05 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
JS 数字转换研究总结
2013/12/26 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
ReactJs实现树形结构的数据显示的组件的示例
2017/08/18 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
快速解决brew安装特定版本flow的问题
2018/05/17 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
2019/04/22 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
element-ui 本地化使用教程详解
2019/10/28 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
2020/10/29 Javascript
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
Django Admin设置应用程序及模型顺序方法详解
2020/04/01 Python
python numpy库np.percentile用法说明
2020/06/08 Python
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
Pharmacy Online中文直邮网站:澳洲大型药房
2020/06/27 全球购物
建筑自我鉴定
2013/10/19 职场文书
大学生个人事迹材料
2014/01/21 职场文书
知名企业招聘广告词大全
2014/03/18 职场文书
乡镇纠风工作实施方案
2014/03/22 职场文书
软环境建设心得体会
2014/09/09 职场文书
《火烧云》教学反思
2016/02/23 职场文书
公司会议开幕词
2016/03/03 职场文书