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 相关文章推荐
整理的9个实用的PHP库简介和下载
Nov 09 PHP
PHP 年龄计算函数(精确到天)
Jun 07 PHP
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
Mar 26 PHP
PHP转换IP地址到真实地址的方法详解
Jun 09 PHP
ThinkPHP表单自动提交验证实例教程
Jul 18 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
Mar 10 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
Mar 01 PHP
PHP二维数组去重算法
Dec 17 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
Apr 26 PHP
详解php与ethereum客户端交互
Apr 28 PHP
解决laravel中日志权限莫名变成了root的问题
Oct 17 PHP
PHP常量及变量区别原理详解
Aug 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下图片文字混合水印与缩略图实现代码
2009/12/11 PHP
使用php shell命令合并图片的代码
2011/06/23 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
JavaScript 数组循环引起的思考
2010/01/01 Javascript
Javascript表达式中连续的 && 和 || 之赋值区别
2010/10/17 Javascript
如何通过javascript操作web控件的自定义属性
2013/11/25 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
jQuery将多条数据插入模态框的示例代码
2014/09/25 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
jquery实现的Accordion折叠面板效果代码
2015/09/02 Javascript
redux中间件之redux-thunk的具体使用
2018/04/17 Javascript
vue-router实现嵌套路由的讲解
2019/01/19 Javascript
微信小程序生成二维码的示例代码
2019/03/29 Javascript
原生JS无缝滑动轮播图
2019/10/22 Javascript
[45:16]完美世界DOTA2联赛循环赛 IO vs FTD BO2第二场 11.05
2020/11/06 DOTA
python实现将内容分行输出
2015/11/05 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
2018/08/02 Python
python 阶乘累加和的实例
2019/02/01 Python
Django用户认证系统 组与权限解析
2019/08/02 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
基于python实现把图片转换成素描
2019/11/13 Python
python 穷举指定长度的密码例子
2020/04/02 Python
Python常用数据分析模块原理解析
2020/07/20 Python
Python pymysql模块安装并操作过程解析
2020/10/13 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
远东集团网络工程师面试题
2014/10/20 面试题
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
学习十八大坚定理想信念心得体会
2014/03/11 职场文书
高一学生评语大全
2014/04/25 职场文书
社会调查研究计划书
2014/05/01 职场文书
群众路线个人整改方案
2014/10/25 职场文书
2014年保洁工作总结
2014/11/24 职场文书
公司管理制度范本
2015/08/03 职场文书
python基础之函数的定义和调用
2021/10/24 Python
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB