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 相关文章推荐
php5.2时间相差8小时
Jan 15 PHP
php,ajax实现分页
Mar 27 PHP
PHP 获取目录下的图片并随机显示的代码
Dec 28 PHP
PHP下操作Linux消息队列完成进程间通信的方法
Jul 24 PHP
php下目前为目最全的CURL中文说明
Aug 01 PHP
PHP5权威编程阅读学习笔记 附电子书下载
Jul 05 PHP
查找mysql字段中固定字符串并替换的几个方法
Sep 23 PHP
C/S和B/S两种架构区别与优缺点分析
Oct 23 PHP
Windows2003下php5.4安装配置教程(IIS)
Jun 30 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
Nov 05 PHP
Mac系统下安装PHP Xdebug
Mar 30 PHP
PHP函数按引用传递参数及函数可选参数用法示例
Jun 04 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函数preg_match_all正则表达式的基本使用详细解析
2013/08/31 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
PHP编程实现阳历转换为阴历的方法实例
2017/08/08 PHP
PHP实现简单的计算器
2020/08/28 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
2021/03/09 PHP
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
angularJS 入门基础
2015/02/09 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
javascript常见数据验证插件大全
2015/08/03 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
javascript自动恢复文本框点击清除后的默认文本
2016/01/12 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
十大热门的JavaScript框架和库
2017/03/21 Javascript
vue父子组件的嵌套的示例代码
2017/09/08 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
Node.js操作MongoDB数据库实例分析
2020/01/19 Javascript
vue+AI智能机器人回复功能实现
2020/07/16 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
2020/11/05 Javascript
js实现验证码干扰(动态)
2021/02/23 Javascript
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
2018/12/18 Python
Python如何在DataFrame增加数值
2020/02/14 Python
利用python爬取有道词典的方法
2020/12/08 Python
HTML5 Web Database 数据库的SQL语句的使用方法
2012/12/09 HTML / CSS
外贸业务员的岗位职责
2013/11/23 职场文书
考试作弊被抓检讨书
2014/01/10 职场文书
五年级科学教学反思
2014/02/05 职场文书
2014年科协工作总结
2014/12/09 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
大学校园餐饮创业计划书
2019/08/07 职场文书