当我用HttpClient的post去请求外部微信支付跳转时得到一个返回值:

{"code":"XXXXXXXXX,"message":"请使用微信打开页面"}

当时通过思考我想到了两个办法:

把这个POST请求放在页面上,通过Ajax去POST请求,由于是微信公众号跳转,所以跳转肯定是用微信跳转的

还是通过后台跳转,想办法发送请求的时候跳过微信识别验证或者直接把请求伪装成微信浏览器请求

第一种办法比较快捷,由于时间问题,肯定比较倾向快速解决:

运行项目后在微信里去点击按钮进行POST请求的时候报 405 这是资源跨域的问题,在网上找了一些办法说在被请求的资源加上 “Access-Control-Allow-Origin”,但是我请求的是第三方,所以这个问题到了这里对于我来说就有点无解,实在由于时间问题不去找其他资料了,这个等空闲了看看能不能实现。

第二种办法和我当初的想法一样,就是卡在这里,既然第一种方法不行那就想想怎么伪装成微信去访问:

去网上找了一些资料,得到的确是在谷歌浏览器开发者模式下手机模式下修改值为:

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

这样就能用谷歌访问必须要微信访问的页面,我试了用这个模式直接跳转Url去跳转第三方POST,发现有返回跳转页面,而不是“message”:”请使用微信打开页面”,那就按照这个方式走,既然我能伪装浏览器我为何不能伪装后台POST请求的时候伪装的浏览器设置有微信特点的伪装成微信浏览器去访问呢?

逆向思维一下,既然第三方判断我这边请求不是用微信的话,它是通过什么判断的,所以我百度了一下,发现微信可以通过Request(请求)中获取头部中的userAgent值来判断是否是微信内置浏览器,意思就是可以在POST请求上头部信息加上userAgent的值来伪装微信内置浏览器去请求了:

// 请求客户端及参数

CloseableHttpClient client = HttpClients.createDefault();

// Post请求

HttpPost httppost = new HttpPost(url);

//在这里我们给Post请求的头部加上User-Agent来伪装成微信内置浏览器

httppost.setHeader("User-Agent","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");

//这个是在网上看到的,要加上这个,避免其他错误

httppost.setHeader("Referer", "https://mp.weixin.qq.com");

//发送Post请求

response = client.execute(httppost);

//.....获取response请求后其他的操作

通过测试,问题解决。

总结:

微信的内置浏览器识别是请求的头部是否有 User-Agent 值并且值是否为User-Agent”,”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 所以以后要进行后台跳转相关微信服务可以通过设置头的 User-Agent的值来进行伪装微信内置浏览器请求

微信公众号post方法Java_Java HttpClient 如何伪装微信浏览器进行POST请求相关推荐

  1. python下载微信公众号文章_python如何导出微信公众号文章方法详解

    1.安装wkhtmltopdf 下载地址:https://wkhtmltopdf.org/downloads.html 我测试用的是windows的,下载安装后结果如下 2 编写python 代码导出 ...

  2. 微信开发者解除绑定微信公众号的方法,亲测有效

    微信开发者解除绑定微信公众号的方法,亲测有效 微信关注 '公众平台安全助手' 点击'绑定查询',选择'微信号绑定账号',出现以下页面: 点击列表右边的箭头 ,选择'解除绑定'即可: 这个问题相信对很多 ...

  3. 鑫光芒教程进阶篇微信公众号推广方法大公开

    鑫光芒教程进阶篇微信公众号推广方法大公开,这几年通过公众号崛起的个人非常非常多,无数草根借助公众号平台实现了从零到一的跨越,身家数百万.数千万.现在,公众号的打开率越来越低了,有更多的人抱怨不好做了, ...

  4. python 公众号文章发布_python如何导出微信公众号文章方法详解

    1.安装wkhtmltopdf 下载地址:https://wkhtmltopdf.org/downloads.html 我测试用的是windows的,下载安装后结果如下 2 编写python 代码导出 ...

  5. Node.js七天搞定微信公众号(又名:Koa2实现电影微信公众号前后端开发)- 问题汇总

    未完待续 视频资料在上一篇博客<Node.js七天搞定微信公众号(又名:Koa2实现电影微信公众号前后端开发)> 问题1:该公众号提供的服务出现故障,请稍后重试! 出处:<第4章 实 ...

  6. 微信公众号、内嵌H5字体受微信字体大小影响问题的解决方案

    微信公众号.内嵌H5字体受微信字体大小影响问题的解决方案,代码也是之前网上找的,现在记录一下 //微信公众号禁止设置老年字体 ;(function() {if (typeof WeixinJSBrid ...

  7. php公众号提现功能,微信公众号打赏的钱怎么提现_微信公众号打赏功能_微信公众号打赏从哪里取出来...

    微信公众号打赏的钱怎么提现,微信公众号打赏功能.微信公众号之前打赏功能可以立即取现,但是最近出现了一些变动,会有人问微信公众号打赏为什么不能立刻取现?小编为大家带来了微信公众号打赏取现时间调整. 微信 ...

  8. 微信公众号无法抓包 提示请在微信客户端打开链接

    最近有一个需求是测试公司公众号中某个需要鉴权接口的性能.首先就是需要对该接口进行抓包,根据以前写过的一篇文章,我们可以过使用Fiddler对微信PC客户端抓包来获取接口信息. 使用fiddler抓包微 ...

  9. weixintong ent.php,多商户版微信商城对接微信公众号的方法及设置

    第一步首先自己申请一个认证的微信服务公众号,拥有了自己的公众号的用户请再来看我的帖子.还有绑定的域名要备案了[1]1.打开微信公众号https://mp.weixin.qq.com选择 [开发]→[开 ...

最新文章

  1. 下轮牛市高峰可能在2020年,以太坊是关键
  2. 微信小程序开发之选项卡
  3. pythontcp服务器如何关闭阻塞_python实现单线程多任务非阻塞TCP服务端
  4. ubuntu启动时自动挂载windows分区
  5. windows下配置ssh(FreeSSHD + putty)
  6. php短信接口源码,比较简单,但也实用
  7. 工作流调度系统介绍,常见工作流调度系统对比,azkaban与Oozie对比,Azkaban介绍与特性(来自学习笔记)
  8. 2021游戏市场风向标报告
  9. 汇编语言语句及其格式
  10. 【UOJ348】【WC2018】州区划分 状压DP FWT
  11. 年入10亿,“山寨”耳机芯片凶猛
  12. 王思聪、贾跃亭、罗永浩组成神奇的三角债?罗永浩回应...
  13. 台达plc用c语言编程软件,台达plc编程
  14. [NLP论文阅读]A SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SENTENCE EMBEDDINGS
  15. 【UnityDragonBone】2D像纸娃娃系统所需资料
  16. 简单推箱子java_Java实现简单推箱子游戏
  17. Retrofit2.9.0源码解析
  18. WCF学习经验分享,如何更好地学习WCF?
  19. 将TTF格式文字转换成eot格式
  20. NTP对时服务器(NTP电子时钟)在生物制药业应用

热门文章

  1. 任正非的忠告:不赚钱的产品就关闭压缩
  2. latex如何更改某一段落的字体_LaTeX 设置字体
  3. 羊了怎么居家办公?免费不限速的远程控制软件RayLink一解燃眉之急!!
  4. 万字长文让您搞懂云原生!
  5. No matching provisioning profile found: Your build settings specify a provis...
  6. matplotlib:使用子图实现简易象形图
  7. pulseaudio-webrtc-audio-processing的编译环境搭建
  8. 【Linux】Linux运维命令汇总单词表
  9. 网站页面上标签页小图标的添加方式
  10. 云呐|PDA无线固定资产盘点管理系统