b23.tv 以前服务端校验非常弱智,后来修复过后没见有人任意跳转了。

b23.tv 发评论区不容易被风控,所以钻研了一下,搞来玩玩儿。

先搞一个 b 站获取短链的接口:

import random
import requests
import json
import string

api = 'http://api.bilibili.com/x/share/click'

def random_buvid():
    return ''.join(random.choices(string.digits+string.ascii_letters, k=32))+'infoc'

def get_b23of(long_url):
    data = {
        'build': '6500300',
        'buvid': random_buvid(),
        'oid': long_url,
        'platform': 'android',
        'share_channel': 'COPY',
        'share_id': 'public.webview.0.0.pv',
        'share_mode': '3'
    }
    res = requests.post(api, data=data, timeout=9, headers={
        "User-Agent": ""
    })
    data = json.loads(res.content)
    print(data)

随后注意到 B 站安卓客户端(俺没有苹果)有个bilibili://browser?url=http://www.bilibili.com的跳转,离谱的是bilibili://browser?url=http://www.bilibili.com&url=@www.baidu.com会被跳转到http://www.bilibili.com,@www.baidu.com,并且短链接生成只会检验第一个 url 参数,就可以所以组合任意链接跳转了。