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 相关文章推荐
实用函数8
Nov 08 PHP
php 判断是否是中文/英文/数字示例代码
Sep 30 PHP
php返回字符串中所有单词的方法
Mar 09 PHP
php实现插入排序
Mar 29 PHP
PHP利用APC模块实现大文件上传进度条的方法
Oct 29 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
Dec 17 PHP
详解YII关联查询
Jan 10 PHP
PHP中file_exists使用中遇到的问题小结
Apr 05 PHP
php die()与exit()的区别实例详解
Dec 03 PHP
YII框架行为behaviors用法示例
Apr 26 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 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
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
深入PHP内存相关的功能特性详解
2013/06/08 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
Yii框架响应组件用法实例分析
2019/09/04 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
2020/04/26 PHP
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
javascript实现uploadify上传格式以及个数限制
2015/11/23 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
2020/12/10 Vue.js
Python 常用string函数详解
2016/05/30 Python
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
利用Python开发实现简单的记事本
2016/11/15 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
Python实现的桶排序算法示例
2017/11/29 Python
Python使用爬虫爬取静态网页图片的方法详解
2018/06/05 Python
Python爬虫框架Scrapy常用命令总结
2018/07/26 Python
python列表推导式入门学习解析
2019/12/02 Python
Python3中FuzzyWuzzy库实例用法
2020/11/18 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
泰国第一在线超市:Tops
2021/02/13 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
Java程序员综合测试题
2014/04/25 面试题
外国语学院毕业生自荐信
2013/10/28 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
党旗在我心中演讲稿
2014/09/15 职场文书
房屋授权委托书范本
2014/10/07 职场文书
简历中自我评价范文
2015/03/11 职场文书
大学生村官入党自传
2015/06/26 职场文书
你会写请假条吗?
2019/06/26 职场文书
详解nodejs内置模块
2021/05/06 NodeJs
Tomcat执行startup.bat出现闪退的原因及解决办法
2022/04/20 Servers