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 相关文章推荐
function.inc.php超越php
Dec 09 PHP
实用函数9
Nov 08 PHP
php email邮箱正则
Oct 08 PHP
php ftp文件上传函数(基础版)
Jun 03 PHP
php实现文件编码批量转换
Mar 10 PHP
php实现粘贴截图并完成上传功能
May 17 PHP
最新制作ThinkPHP3.2.3完全开发手册
Nov 23 PHP
教你php如何实现验证码
Jan 20 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 PHP
PHP与以太坊交互详解
Aug 24 PHP
PHP PDO数据库操作预处理与注意事项
Mar 16 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
Apr 10 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+javascript模拟Matrix画面
2006/10/09 PHP
php中iconv函数使用方法
2008/05/24 PHP
php模拟js函数unescape的函数代码
2012/10/20 PHP
ThinkPHP进程计数类Process用法实例详解
2015/09/25 PHP
php并发加锁示例
2016/10/17 PHP
完美解决Thinkphp3.2中插入相同数据的问题
2017/08/01 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
JavaScript 学习笔记(十三)Dom创建表格
2010/01/21 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
两个数组去重的JS代码
2013/12/04 Javascript
Javascript表单验证要注意的事项
2014/09/29 Javascript
JavaScript中获取鼠标位置相关属性总结
2014/10/11 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
图片加载完成再执行事件的实例
2017/11/16 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
JavaScript生成指定范围随机数和随机序列的方法
2018/05/05 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
2020/07/15 Javascript
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
用Python将动态GIF图片倒放播放的方法
2016/11/02 Python
Python爬虫DOTA排行榜爬取实例(分享)
2017/06/13 Python
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
2018/06/11 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
python设置环境变量的作用和实例
2019/07/09 Python
浅谈python 中的 type(), dtype(), astype()的区别
2020/04/09 Python
Django视图类型总结
2021/02/17 Python
一款利用纯css3实现的超炫3D表单的实例教程
2014/12/01 HTML / CSS
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
linux面试题参考答案(6)
2016/06/23 面试题
婚礼庆典答谢词
2015/01/20 职场文书
python实现自定义日志的具体方法
2021/05/28 Python
java设计模式--建造者模式详解
2021/07/21 Java/Android
Python序列化模块JSON与Pickle
2022/06/05 Python