很多人都应该遇到这样的问题,光明正大的网页链接突然有一天打开发现被封了,申请解封还得3个工作日,遇到周末就直接嗝屁了,有些链接还是系统的关键跳转链接导致所有微信端业务搁置(用户体验极差,举报的人目的性非常强,周末举报+分析关键业务链接)
我们平台算是被人盯上了,但是本着让你免费帮我做测试的阿Q精神还是要乐观一点,实际也别无他法只能先从自身找原因(说实话我很想沿着网线爬过去揍他)。
年前有一次慢连接攻击也是发生在周末,平台突然访问不了,直接远程上去重启。刚开始以为是内存溢出了,后来才发现是ddos攻击的慢连接(这个问题很难解决,基本都是堆钱)。
这个就更搞笑了,直接把我们平台获取用户微信的跳转接口投诉了(oauth2.0),这尼玛导致所有的授权访问都挂了。马上申请恢复,但是微信那边需要3个工作日,当天还是周六,这个还能等?
刚开始想了一个方法,就是程序中动态更换域名,如果封了一个就换另一个,这个方案实施起来比较麻烦。涉及还需要到微信公众号后台去更换域名等一系列麻烦的操作。
下午下班走在路上我还在想这个问题,这个时候已经被封了5-6个小时,突然想到是网页的链接封了不是域名封了,于是我马上随便测试了一个连接,发现并没有被封,这就好办了哇。
直接在后台生成动态的链接就行了哇。
于是乎,原来的授权链接是这样的https://domain.com/oauth/weixin,然后我就在后面做文章了改成了https://domain.com/oauth/weixin/{randomCode}的形式(randomCode就是一个随机码);马上测试,呃发现还是不行提示被封,再来https://domain.com/{randomCode}/oauth/weixin,放到前面完美解决。
使用SpringMVC中的@PathVariable就可以了
@RequestMapping("{randomCode}"/oauth/weixin) public String auth(@PathVariable String randomCode,String code){ //do something return "redirect:/someurl"; }
这个方案还是不足,写一个组件,让所有的链接前面都带上随机码,这样就不用担心有人恶意投诉,导致微信端打不开网页了。
https://github.com/benjamin-coding/random-path.git
最后感谢那位投诉的人帮助我们测试/发现平台的缺陷和不足。