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中使用redis队列操作实例代码
Feb 07 PHP
php版小黄鸡simsimi聊天机器人接口分享
Jan 26 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
Jan 26 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
Mar 25 PHP
一个基于phpQuery的php通用采集类分享
Apr 09 PHP
实例讲解PHP面向对象之多态
Aug 20 PHP
推荐10个提供免费PHP脚本下载的网站
Dec 31 PHP
php生成gif动画的方法
Nov 05 PHP
解析WordPress中的post_class与get_post_class函数
Jan 04 PHP
Zend Framework连接Mysql数据库实例分析
Mar 19 PHP
详解PHP字符串替换str_replace()函数四种用法
Oct 13 PHP
PDO::inTransaction讲解
Jan 28 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连接SQLServer2005的实现方法(附ntwdblib.dll下载)
2012/07/02 PHP
php实现通用的信用卡验证类
2015/03/24 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
2016/06/13 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
javascript动画效果类封装代码
2007/08/28 Javascript
字符串的replace方法应用浅析
2011/12/06 Javascript
JavaScript简介
2015/02/15 Javascript
vue.js表格分页示例
2016/10/18 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
2017/10/24 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
vue项目关闭eslint校验
2018/03/21 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
WebPack配置vue多页面的技巧
2018/05/15 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
微信小程序使用map组件实现路线规划功能示例
2019/01/22 Javascript
vue使用screenfull插件实现全屏功能
2020/09/17 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
Python爬虫番外篇之Cookie和Session详解
2017/12/27 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
2018/09/27 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
2019/03/05 Python
浅谈django2.0 ForeignKey参数的变化
2019/08/06 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
Under Armour瑞典官方网站:美国高端运动科技品牌
2018/11/21 全球购物
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
材料化学应届生求职信
2013/10/09 职场文书
艺术设计专业个人求职信范文
2013/12/11 职场文书
物流专业自荐信
2014/05/23 职场文书
材料化学专业求职信
2014/07/15 职场文书
2015年预算员工作总结
2015/05/14 职场文书
优胜劣汰,强者为王——读《鲁滨逊漂流记》有感
2019/08/15 职场文书
导游词之阆中古城
2019/12/23 职场文书
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL