想在pc上打开利用微信oauth做限制的微信网页,按照《绕过限制,在PC上调试微信手机页面》:http://chitanda.me/2015/06/29/debug-wechat-website-in-pc/的方法,基本思路是对的,但有点小问题,EditThisCookies这个工具是对应域名的,实际操作时无法更改实际要打开的域名下的cookie。
后来想到fiddler不仅可以获取cookie,还能替换cookie,于是在CustomRules.js里面写上
// 删除所有的cookie
oSession.oRequest.headers.Remove("Cookie");
// 新建cookie
oSession.oRequest.headers.Add("Cookie", "username=yulesyu;");
具体用法参考《Fiddler 高级用法:Fiddler Script 与 HTTP 断点调试》:http://www.open-open.com/lib/view/open1429059806736.html
-----------------------------------原文备份-----------------------------------------------------------------
利用微信oauth做限制
上面两种都是比较常见而且简单就能绕过限制的,而有些对用户身份验证要求比较高的页面,则会利用微信的OAUTH
来拉取openid
做验证,这种就不仅仅是改UA这么容易绕过去了。好在也不是无解。因为身份验证一般都是存在cookies
里的,所以我们可以直接给PC模拟器伪造cookies来让页面误以为我们是在微信内做的验证。
PS:
这里是通用方法,不过目前针对微信内的页面,微信官方有提供调试支持,可以查看更新的内容
检测方法
手机浏览器打开后会跳转到open.weixin.qq.com
域名,且页面提示请在微信客户端打开链接
.
绕过方法
- 将浏览器UA改为微信的,然后刷新页面,会发现这个时候不再提示
请在微信客户端打开链接
了,但是整个页面一片空白。 -
打开fiddler,并设置手机wifi连接,确保手机数据都经过了fiddler。
- fiddler的配置可以参考这篇文章,https的两个配置必须要做,不然抓不了微信的包,另外如果确定手机连上了fiddler了但是微信的数据包都没被抓到,可以先把微信app强行关闭,然后重新开一下即可
- 以上用手机操作虽然也还可以用,但是由于微信推出了官方PC客户端,加上手机连fiddler操作比较麻烦,从简单操作的角度考虑建议该步骤用微信PC端打开链接较好
-
在微信里点击页面链接,使其正常进入页面,然后fiddler上注意相关域名的记录,找到
Tunnel to open.weixin.qq.com
后面那条记录。会发现这时候原来的链接带上了oauth
参数。复制这时候的链接
如图:发现我教程没写好导致这步卡了很多人——
Tunnel to open.weixin.qq.com
这条记录其实不是必须的,之所以强调这条是因为这是能找到的第一个带cookies的页面,而由于微信的认证机制有时候会改变加上部分页面请求的微信权限较多,这条请求有时候会被转移到别的url去,因此更准确的描述是找到打开后的页面,从中选取cookies即可
-
在浏览器中打开前面复制的链接,会发现还是白屏,然后右键页面,选择
EditThisCookies
,会发现这个页面下有两条cookies了。也可以在开发者工具的
Resources
>cookies
>wxoauth.wucai.com
里查看当前页面拥有的cookies数量。之所以前面不自己直接创建cookies就是因为cookies除了Value
这个属性外,还有Domain
、Path
、Expires/Max-Age
等等其余属性需要设置,而这些属性自己是摸不出来的,只能先依靠页面服务器创建,然后直接更改Value
即可 -
回到fiddler,还是刚刚选择的链接,右边窗口选择
Headers
,然后会看到下面有两条cookies,以及对应的数值。选中一条,然后右键Copy Value only
,将值复制到前面浏览器里打开的EditThisCookies
页面中去。需要的注意的是,这里复制出来的是
cookies名称
+cookies值
的方式,而EditThisCookies
里只需要填cookies值即可,所以复制进去后记得将cookies Name =
这一部分删掉。如下图所示,绿框里的PHPSESSID=
是不需要的,删掉即可. -
重复第五步,将全部cookies值都改完之后,回到之前的浏览器页面,输入最初的主页链接,成功。
在微信里的话,认证页面完成后一般是有跳转的,不过由于这里是手动更改的,所以没办法触发跳转,需要我们手动模拟一次。而前面的cookies在的缘故,页面服务器也会当我们已经认证过,所以就直接跳过了。
完成,看起来很复杂,其实也很简单。个人感觉这个过程最麻烦的地方其实在于第2步:手机连fiddler需要先断开之前的无线,手动输一次代理设置到wifi,然后再连接下。所以我觉得现在最需要一个安卓下可以存储wifi代理链接设置的工具= =
某些小问题
进去后有部分功能无法正常使用
有时候会发现即使页面正常进去了,也有些功能不能触发,比如上传图片之类的,但是浏览器也没有报错。这种情况下一般多是由于对方使用了微信的jssdk内置方法(wx.xx
之类的)。因为微信内置的方法不是纯webview可以完成的,很多功能都需要微信客户端的配合,因此达不到预期的效果也是很正常的。可以看微信jssdk的官方demo,你会发现基本上没一个可以在PC上用。