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 相关文章推荐
apache+php+mysql安装配置方法小结
Aug 01 PHP
php中模拟POST传递数据的两种方法分享
Sep 16 PHP
php pki加密技术(openssl)详解
Jul 01 PHP
PHP 函数call_user_func和call_user_func_array用法详解
Mar 02 PHP
深入解析PHP中foreach语句控制数组循环的用法
Nov 30 PHP
YII Framework框架教程之安全方案详解
Mar 14 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
May 16 PHP
php+MySql实现登录系统与输出浏览者信息功能
Jul 01 PHP
php类的自动加载操作实例详解
Sep 28 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
Laravel框架生命周期与原理分析
Jun 12 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
Oct 22 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/11/25 PHP
关于php循环跳出的问题
2013/07/01 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
2014/07/10 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
一个收集图片的bookmarlet(js 刷新页面中的图片)
2010/05/27 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
2014/08/18 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
VUEJS实战之构建基础并渲染出列表(1)
2016/06/13 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
小程序清理本地缓存的方法
2018/08/17 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
angular中子控制器向父控制器传值的实例
2018/10/08 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
vue实现拖拽进度条
2021/03/01 Vue.js
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
2015/05/15 Python
Django自定义manage命令实例代码
2018/02/11 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
python怎么对数字进行过滤
2020/07/05 Python
Python监听剪切板实现方法代码实例
2020/11/11 Python
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
澳大利亚窗帘商店:Curtain Wonderland
2019/12/01 全球购物
某公司.Net方向面试题
2014/04/24 面试题
面向对象设计的原则是什么
2013/02/13 面试题
机械专业毕业生自荐信
2013/11/02 职场文书
施工资料员的岗位职责
2013/12/22 职场文书
捐款倡议书
2014/04/14 职场文书