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 相关文章推荐
无数据库的详细域名查询程序PHP版(2)
Oct 09 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
Jun 29 PHP
PHP实现根据浏览器跳转不同语言页面代码
Aug 02 PHP
php读取本地文件常用函数(fopen与file_get_contents)
Sep 09 PHP
从PHP的源码中深入了解stdClass类
Apr 18 PHP
php+html5使用FormData对象提交表单及上传图片的方法
Feb 11 PHP
linux下实现定时执行php脚本
Feb 13 PHP
php实现仿写CodeIgniter的购物车类
Jul 29 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
Dec 22 PHP
PHP 5.6.11中CURL模块问题的解决方法
Aug 08 PHP
Laravel登录失败次数限制的实现方法
Aug 26 PHP
PHP7 list() 函数修改
Mar 09 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者的疑难问答(2)
2006/10/09 PHP
自动分页的不完整解决方案
2007/01/12 PHP
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
php对二维数组按指定键值key排序示例代码
2013/11/26 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
2014/07/08 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
PHP正则验证Email的方法
2015/06/15 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
js 文件引入实现代码
2010/04/23 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
javaScript同意等待代码实现心得
2011/01/01 Javascript
Javascript事件实例详解
2013/11/06 Javascript
理解javascript正则表达式
2016/03/08 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
2016/05/31 Javascript
Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法
2016/12/31 Javascript
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
详解Webpack4多页应用打包方案
2020/07/16 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
Windows上配置Emacs来开发Python及用Python扩展Emacs
2015/11/20 Python
python实现log日志的示例代码
2018/04/28 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
Python Gitlab Api 使用方法
2019/08/28 Python
python openCV获取人脸部分并存储功能
2019/08/28 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
工业设计专业个人求职信范文
2013/12/28 职场文书
幼儿园春游活动方案
2014/01/19 职场文书
六月份红领巾广播稿
2014/02/03 职场文书
文秘个人求职信范文
2014/04/22 职场文书
青年志愿者活动总结
2014/04/26 职场文书
2015年班长个人工作总结
2015/04/03 职场文书
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python
Python matplotlib多个子图绘制整合
2022/04/13 Python