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 相关文章推荐
详解:――如何将图片储存在数据库里
Dec 05 PHP
php下正则来匹配dede模板标签的代码
Aug 21 PHP
php简单的会话类代码
Aug 08 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
Dec 28 PHP
基于PHP magic_quotes_gpc的使用方法详解
Jun 24 PHP
php读取本地文件常用函数(fopen与file_get_contents)
Sep 09 PHP
PHP遍历XML文档所有节点的方法
Mar 12 PHP
php获取twitter最新消息的方法
Apr 14 PHP
Zend Framework教程之Autoloading用法详解
Mar 08 PHP
PHP设计模式之装饰器模式定义与用法详解
Apr 02 PHP
Yii框架函数简单用法分析
Sep 09 PHP
PHP实现通过二维数组键值获取一维键名操作示例
Oct 11 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 download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
php摘要生成函数(无乱码)
2012/02/04 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
详解PHP的抽象类和抽象方法以及接口总结
2019/03/15 PHP
jQuery.extend 函数详解
2012/02/03 Javascript
基于jquery的bankInput银行卡账号格式化
2012/08/22 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
JavaScript实现答题评分功能页面
2020/06/24 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
2020/11/06 Javascript
JavaScript实现商品评价五星好评
2020/11/30 Javascript
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
用Python shell简化开发
2018/08/08 Python
python第三方库学习笔记
2020/02/07 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
python math模块的基本使用教程
2021/01/16 Python
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
weblogic面试题
2016/03/07 面试题
金鑫耀Java笔试题
2014/09/06 面试题
财务内勤岗位职责
2014/04/17 职场文书
公司停电通知
2015/04/15 职场文书
入党转正介绍人意见
2015/06/03 职场文书
vue-element-admin项目导入和导出的实现
2021/05/21 Vue.js
PostgreSQL数据库创建并使用视图以及子查询
2022/04/11 PostgreSQL
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL