上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖
楼主: 申禅姌 - 

短链接、防红实现原理详解

[复制链接]

该用户从未签到

6

主题

1

回帖

84

积分

初级工程师

积分
84
发表于 2024-5-25 15:01:01 | 显示全部楼层 | 阅读模式

本帖最后由 申禅姌 于 2024-5-25 15:01 编辑

名词解释:

1.短链接

顾名思义,短链接就是“短”的链接(废话),当我们在互联网上浏览时,发现一篇非常有教育意义的文章,或者一个活动页面, 想要发送给我们的好朋友,最简单的办法就是复制网址,然后去QQ微信粘贴,这样可以,但效果不是很好,因为我们从浏览器上复制的网址,通常都很长,例如下面这样↓

https://www.msn.cn/zh-cn/news/other/2025-%E5%B9%B4-10-%E6%9C%88%E7%BB%88%E6%AD%A2%E6%94%AF%E6%8C%81-%E5%BE%AE%E8%BD%AF%E6%9B%B4%E6%96%B0%E6%94%AF%E6%8C%81%E9%A1%B5%E9%9D%A2-%E6%95%A6%E4%BF%83-win10-%E7%94%A8%E6%88%B7%E5%8D%87%E7%BA%A7/ar-BB1n0MGe?ocid=msedgntp&pc=W037&cvid=665158dcfbf94f4aa4e4685ced28fdfc&ei=10

Screenshot_2024-05-25-11-21-06-61_9d26c6446fd7bb8.jpg


这就是短链接存在的意义,【把长的网址缩短】,我们可以很轻松的从百度上搜索到各种短链接在线生成的网站,他会把你的长链接缩短到一行,例如:

这是一个很短的链接→http://t.cn/A6H9sJ0x

iShot_2024-05-25_11.29.07.png


怎么实现的呢?很简单,就是你把长链接给他,他把链接存储在自己的数据库内,然后为这个链接取个名字,例如“A6H9sJ0x”,然后使用他自己的服务器进行重定向。
例如:t.cn 是他的服务器,t.cn/A6H9sJ0x就是服务器+名字,用户访问这个网址以后,他根据名字去自己的数据库查找这个链接,然后在页面上跳转,网址缩短功能就实现了


2.防红

当我们在QQ、微信的聊天窗口内点击一个网址时,他会在APP内部打开一个浏览器窗口,让你留在APP里面,这样他就可以监控你所访问的页面,当你试图访问一些不正规网站的时候,他就会拦截。


Screenshot_2024-05-25-11-46-32-17_9d26c6446fd7bb8(1).png


把这样的一个链接发给朋友,不仅没有起到分享作用,反而会让你的朋友感觉你“不正经”,如果你是某个网站的老板,给客户发送这样一条推广链接,后果可想而知。

QQ、微信这样做的目的是为了“保证用户安全”,但实际上你会发现,可以正常访问的链接通常都是站长主动去申诉,甚至是“交了保护费”。QQ微信服务器虽然会自动识别访问的网站,检测他是否违规,但误伤率极高,这对很多小网站非常不友好。

在此前提下,防红技术应运而生,防红通常是和短链接一起应用,当用户访问一个短链接时,他不会第一时间跳转到对应的长链接,而是先检测用户浏览器环境,当发现用户在使用QQ、微信内置浏览器时,跳转到一个中转页面,提示用户在浏览器打开页面,相信大家日常上网中也遇到过。

25919195166849.png

当然,还有更高级的,不会引导用户在浏览器打开,而是直接在微信内显示正常内容,这是比较高级的操作,后面会讲

实现原理:

1.短链接

短链接的实现原理很简单,就是服务器储存+转发,而重点就在于“短”,想要拥有一个1-2位数的短域名就不是钱能解决的问题了,这其中最为知名的就是新浪短链接(t.cn)
d01373f082025aafe578e0abffedab64034f1a03.png

新浪的短链接服务之前还是开放的,后来由于监管问题只允许微博等内部使用了,用户在自家产品内发帖时,服务器会自动把帖子中的网址转换为t.cn的短链接,虽说不开放,实际上还是有很大的操作空间,使用一些技术手段还是很好实现的,所以现在市面上还是有不少可以直接生成t.cn短网址的产品。

另一个比较知名的就是百度短网址(dwz.cn),这个看起来就没有新浪那么厉害了,因为他的域名长度是5位数,新浪是极限3位数,一寸短一寸险,百度目前可以合作对接。

2.防红

防红技术可谓是八仙过海、各显神通。域名被红,主要原因是QQ微信检测到了,判断不适合用户访问,导致用户在APP内点击链接无法直接访问对应网站,QQ微信对链接的处理方法具体有以下几种情况(以QQ为例,实际微信更严格):

1.红色,禁止用户访问

这种情况起不到一点推广作用
Screenshot_2024-05-25-11-46-32-17_9d26c6446fd7bb8(1).png

2.蓝色,提示用户复制到浏览器

这种情况会留住一小部分用户
IMG_20240525_124221.png

3.蓝色,询问用户是否继续访问

这种情况通常不用担心
IMG_20240525_124210.png

4.绿色,用户点击链接可以直接访问

这种情况最好了
没图😄


无论你是大中小站长,还是黑灰产大哥,你最希望的当然是无论用户在哪里点开你的链接,直接就能访问,那么接下来我就理论+实践讲解如何防红。
备注:防红是一门大学问,我只是入门选手,奇技淫巧众多,能用的防红就是好防红

首先,你要确保,无论你如何操作,只要是在QQ微信内打开的网址,一定要是腾讯白名单网址,这条没有例外,因为你代码写得再好,他也会在访问前检测你的网站域名,域名不行啥都白搭。

1.引导用户跳转的防红

短网址服务需要使用qq白名单的域名,例如dwz.cn,t.cn这两个短网址属于百度、新浪旗下。qq微信不会封禁,但由于滥用,也有可能无法直接访问,直接访问会变成蓝色状态。所以可以选择比较冷门的跳转服务,只要是正规公司有备案的网址大多数都能在APP内直接访问,也可以自己制作一个个人简介网站,看看腾讯会不会允许访问,如果不行就去腾讯那里申诉。
腾讯网站拦截申诉:https://urlsec.qq.com/complain.html

注意,腾讯关于网址拦截有很详细的规定,你用来申诉的网站必须是完全合规的,如果你直接使用业务网站来申请,如商城、论坛等,八成不会通过,还有可能直接拉黑,所以你用来申请的只是一个内容单一,完全符合各项规定的网站,最好是非交互网站(静态页面,只能看不能互动的)
iShot_2024-05-25_13.24.33.png


第二步就是检测用户浏览器,在搞定域名检测后,用户访问时检测用户的浏览器,通过js或者服务器后台检测用户的useragent,js代码如下所示:

const ua = navigator.userAgent.toLowerCase()
if(ua.includes('qq')){
  console.log('正在使用QQ')
}else if(ua.includes('micromessenger')){
    console.log('正在使用微信')
}else{
  console.log('正在使用其他浏览器')
}

在用户使用QQ微信的时候就可以直接要求用户在其他浏览器打开,在检测到其他浏览器的时候直接跳转对应网站就行了。
流程如下:用户访问绿色网站→检测useragent→要求其他浏览器或直接跳转


案例展示:

关于引导用户打开浏览器的防红,我没有找到示例,下面只讲规避域名检测的示例

示例1:

为以下链接生成短网址:

https://www.msn.cn/zh-cn/news/other/2025-%E5%B9%B4-10-%E6%9C%88%E7%BB%88%E6%AD%A2%E6%94%AF%E6%8C%81-%E5%BE%AE%E8%BD%AF%E6%9B%B4%E6%96%B0%E6%94%AF%E6%8C%81%E9%A1%B5%E9%9D%A2-%E6%95%A6%E4%BF%83-win10-%E7%94%A8%E6%88%B7%E5%8D%87%E7%BA%A7/ar-BB1n0MGe?ocid=msedgntp

生成的短链接:

http://t.cn/A6H9sJ0x

直接访问这个短链接,浏览器网络请求如下:
iShot_2024-05-25_13.49.33.png
首先访问了http://t.cn/A6H9sJ0x网址本体,然后302跳转到了一个奇怪网址:

http://nos.netease.com/music-contract/781d12030c9ba100032bb823f71f89d2.xhtml?/x7CaR9

可以看到,t.cn短网址并没有直接跳转到长链接本体,而是网易的一个网址,这是短链接生成网站的一个骚操作,因为t.cn是新浪旗下的,我非法对接了新浪短网址,新浪也会对传入的长链接进行检测,所以我不能把长链接直接对接到t.cn上,如果新浪检测到了非法对接,撤回这条短链接,对于我和我的用户来说是无法挽回的,所有推广工作都会白费,所以我直接将网易的网址对接到新浪上,网易是正规公司,可能会规避掉新浪的检测机制。
新浪那边没问题了,我这边问题大了,访问t.cn直接跳转到网易去了,我怎么办,我不想让用户访问网易啊,这就属于奇技淫巧的范畴了,如下图所示,网易的链接返回了如下内容:
iShot_2024-05-25_13.51.27.png
网易的页面引用了一个奇怪的js文件,接下来看一下js文件内都有什么:
iShot_2024-05-25_14.03.22.png
他首先从网易的链接中获取了查询字符串,在本示例中就是“x7CaR9”,然后携带参数访问了https://mqeir.cn/getres.php接口
接口返回如下:
iShot_2024-05-25_14.06.38.png
这样就是返回我们自己的长链接了,再看js内的代码,使用self.location.href = data.url;实现了页面跳转到自己的长链接


在本示例中没有实现检测微信QQ,而是直接跳转,并没有防红功能,但展示了一种短链接策略,使用了netease.com这个白名单域名,不仅能通过QQ微信的域名检测,还能通过t.cn的对接检测,实现了t.cn可以跳转到任意第三方网址的功能。
这里面的难点就是:如何让网易的页面执行我想要的操作
我不知道,这属于XSS的范畴,当然这也是防红的核心,你只要掌握了,就能做到绿色域名跳转。

另一个示例:

这个示例并没有短链接,但实现了在QQ微信内直接打开对应网站并且规避域名检测
网址如下:

http://13504613.cars.org.cn/upload/avatar/thumb_1715756549572.html?data=7TkogUtQf6sWR5oAU9hiWKzLuDIZpzuUOMJ-p7ca5351468VYzGuDPJ1MpanzKxY

网址很长,可以看出来主域名是http://13504613.cars.org.cn/,打开发现是中国空气动力学会官网

iShot_2024-05-25_14.28.32.png

很显然,这个防红链接通过某种方式让中国空气动力学会官网帮他做事,当QQ、微信检测此网址时,发现是中国空气动力学会,就会直接通过,现在我们再来看看具体代码实现,页面代码如下:
iShot_2024-05-25_14.31.32.png


他的js代码仍然是通过请求一个第三方网址,根据url参数内的名字寻找对应的长链接,但是这个页面并没有直接跳转,而是使用了iframe,将实际链接显示在iframe内,因为是动态加载,QQ微信不可能知道实际内容了,只能针对性的检测或者人工审核。


总结下来,短链接难度不高,难点在于通过QQ微信的检测,可以诱导用户打开其他浏览器,也可以使用奇技淫巧,让合法的网站帮我干不合法的事,这也是防红的精髓,八仙过海,各显神通,找到了一个好方法,你也能做防红

展示一个超星学习通的例子

https://detect.chaoxing.com/api/monitor_temp?refer=http%3A%2F%2Fbbs.tampermonkey.net.cn&from=&mes=%E7%82%B9%E5%87%BB%E7%A1%AE%E5%AE%9A%E8%B7%B3%E8%BD%AC%E8%87%B3%E6%B2%B9%E7%8C%B4%E4%B8%AD%E6%96%87%E7%BD%91

此网址属于超星,但访问后会跳转至油猴中文网

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6758

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2024-5-25 16:05:53 | 显示全部楼层
    思路清晰操作流畅
    而且又感觉很有意思
    好文!
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    3 小时前
  • 签到天数: 773 天

    [LV.10]以坛为家III

    76

    主题

    519

    回帖

    871

    积分

    专家

    脚本猫首席体验官

    积分
    871

    油中2周年生态建设者新人报道油中3周年挑战者 lv2喜迎中秋

    发表于 2024-5-25 20:58:13 | 显示全部楼层
    ggnb!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-2-28 14:15
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    37

    主题

    233

    回帖

    363

    积分

    版主

    积分
    363

    油中2周年生态建设者

    发表于 2024-6-1 18:01:37 | 显示全部楼层
    写的太好了,ggnb
    一叶叶,一声声,空阶滴到明。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2024-6-1 23:54:08 | 显示全部楼层
    这么骚
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表