抖音各加密参数说明和获取(含代码)

​X-Bogus:X-Bogus是一种防数据包伪造的一个参数, 又称为x伪造,主要用于反爬虫,这个是某节公司下面基础服务,这个反爬虫机制几乎用在了它所有的产品中,不过,只要是能正常使用,这些东西都是透明的,X-Bogus生成算法。

获取方法参考某大佬文章:【爬虫实战】使用Python和JS逆向抖音X-Bogus参数获取N条视频-CSDN博客

msToken:msToken可以理解成Message Token,相当于每次消息请求的令牌,主要用于请求统计,这也是具有反爬虫的机制,如果相同msToken请求太多,也会被定义成恶意请求,这时候会出现验证码校验。所以我们在使用的时候,可以用uuid或者是雪花算法的id来模拟msToken,当然长度大于32位的唯一串最好
获取方法如下:

    def get_ms_token(self, randomlength=107):
        """
        根据传入长度产生随机字符串
        """
        random_str = ''
        base_str = 'ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789='
        length = len(base_str) - 1
        for _ in range(randomlength):
            random_str += base_str[random.randint(0, length)]
        return random_str


 

__signature:signature是签名,主要是防止数据传输的过程中,“中间人”对数据进行串改。签名一般都是公钥加密,私钥验签。参与签名的参数有url地址中的参数,还有post请求中的内容,也会参与签名。signature主要用于post或者put表单的时候进行使用,其他情况暂时未遇到。

获取方法参考某大佬文章

某音签名jsvmp还原__ac_signature-CSDN博客

__ac_nonce:临时加密参数,用于与_signature一起使用

ttwid:ttwid类似客户端id,即便是游客模式,也可以对页面数据进行埋点统计,通过收集ttwid下的用户行为数据,给与内容推荐和广告推荐。这个也是某节公司下的基础服务,所以生成的id,只要是某节下的服务都可以使用



webid:同ttwid,类似客户端id,也可以说是浏览器id,不过ttwid可在cookie获取,webid可在随意一个视频请求,返回的html文本的script里再通过正则获取

ttwid和webid获取方法:(js代码就在如上:某音签名jsvmp还原__ac_signature-CSDN博客,自己抄,因为怕版权问题就不复制了)

    def get_ttwid_webid(self, req_url):
        """
        获取 ttwid 和 webid
        :param req_url:请求的视频地址
        :return:
        """
        try:
            response = requests.request("GET", req_url, headers=self.ttwid_webid_headers, verify=False, timeout=3)
            cookies_dict = response.cookies.get_dict()
            ac_nonce = cookies_dict.get('__ac_nonce')
            if(ac_nonce):
                ac_signature = execjs.compile(open(self.ac_sign_js_path).read()).call('func1', req_url, self.user_agent,ac_nonce)
                ttwid_webid_headers1 = copy.deepcopy(self.ttwid_webid_headers)
                ttwid_webid_headers1['Referer'] = req_url
                ttwid_webid_headers1['Cookie'] = f'__ac_nonce={ac_nonce}; __ac_signature={ac_signature}; __ac_referer=__ac_blank'
                response = requests.request("GET", req_url, headers=ttwid_webid_headers1, verify=False, timeout=3)
            if (("/captcha/index.js" in response.text) or ("Please wait...</body>" in response.text)):
                print("跳出验证码,暂停爬取")
                time.sleep(5)
                return self.get_ttwid_webid(req_url)
            else:
                render_data_text = \
                    re.compile('\<script id=\"RENDER_DATA\" type\=\"application\/json\">(.*?)\<\/script\>').findall(
                        response.text)[0]
                render_data_text = requests.utils.unquote(render_data_text)
                render_data_json = json.loads(render_data_text, strict=False)
                webid = render_data_json.get('app').get('odin').get('user_unique_id')
                cookies_dict = response.cookies.get_dict()
                ttwid_str = cookies_dict.get('ttwid')
                return ttwid_str, webid
        except (requests.exceptions.ProxyError, requests.exceptions.ReadTimeout,requests.exceptions.ConnectionError) as e:
            logging.error(e)
            time.sleep(5)
            return self.get_ttwid_webid(req_url)

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NealHuiwen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值