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 相关文章推荐
拼音码表的生成
Oct 09 PHP
phpMyAdmin 链接表的附加功能尚未激活的问题
Aug 01 PHP
php数据入库前清理 注意php intval与mysql的int取值范围不同
Dec 12 PHP
PHP中通过加号合并数组的一个简单方法分享
Jan 27 PHP
PHP fopen 读取带中文URL地址的一点见解
Sep 25 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
Jul 25 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
Nov 05 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
Nov 24 PHP
yii2缓存Caching基本用法示例
Jul 18 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
Oct 03 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
ecshop添加菜单及权限分配问题
Nov 21 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利用imagick生成组合缩略图
2016/02/19 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
2017/04/18 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
2010/09/10 Javascript
jquery 元素相对定位代码
2010/10/15 Javascript
jQuery grep()方法详解及实例代码
2016/10/30 Javascript
js学习之----深入理解闭包
2016/11/21 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
2016/12/26 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
JS实现列表页面隔行变色效果
2017/03/25 Javascript
ES6中class类用法实例浅析
2017/04/06 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
跟老齐学Python之Python安装
2014/09/12 Python
python&MongoDB爬取图书馆借阅记录
2016/02/05 Python
Python装饰器用法实例总结
2018/02/07 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
python使用PyQt5的简单方法
2019/02/27 Python
python添加菜单图文讲解
2019/06/04 Python
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
CentOS 7如何实现定时执行python脚本
2020/06/24 Python
简单介绍HTML5中的文件导入
2015/05/08 HTML / CSS
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
英国电动工具购买网站:Anglia Tool Centre
2017/04/25 全球购物
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
试用期工作表现自我评价
2015/03/06 职场文书
给下属加薪申请报告
2015/05/15 职场文书
2016党校学习心得体会
2016/01/07 职场文书
电工生产实习心得体会
2016/01/22 职场文书
创业计划书之网吧
2019/10/10 职场文书
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript