广东网站建设熊掌号,wordpress会员可见,网站怎么设置为可信任网站,营销网站设计公司有哪些X-Bogus#xff1a;X-Bogus是一种防数据包伪造的一个参数#xff0c; 又称为x伪造#xff0c;主要用于反爬虫#xff0c;这个是某节公司下面基础服务#xff0c;这个反爬虫机制几乎用在了它所有的产品中#xff0c;不过#xff0c;只要是能正常使用#xff0c;这些东…X-BogusX-Bogus是一种防数据包伪造的一个参数 又称为x伪造主要用于反爬虫这个是某节公司下面基础服务这个反爬虫机制几乎用在了它所有的产品中不过只要是能正常使用这些东西都是透明的X-Bogus生成算法。
获取方法参考某大佬文章【爬虫实战】使用Python和JS逆向抖音X-Bogus参数获取N条视频-CSDN博客 msTokenmsToken可以理解成Message Token相当于每次消息请求的令牌主要用于请求统计这也是具有反爬虫的机制如果相同msToken请求太多也会被定义成恶意请求这时候会出现验证码校验。所以我们在使用的时候可以用uuid或者是雪花算法的id来模拟msToken当然长度大于32位的唯一串最好获取方法如下 def get_ms_token(self, randomlength107):根据传入长度产生随机字符串random_str base_str ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789length len(base_str) - 1for _ in range(randomlength):random_str base_str[random.randint(0, length)]return random_str __signaturesignature是签名主要是防止数据传输的过程中“中间人”对数据进行串改。签名一般都是公钥加密私钥验签。参与签名的参数有url地址中的参数还有post请求中的内容也会参与签名。signature主要用于post或者put表单的时候进行使用其他情况暂时未遇到。
获取方法参考某大佬文章
某音签名jsvmp还原__ac_signature-CSDN博客 __ac_nonce临时加密参数用于与_signature一起使用 ttwidttwid类似客户端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, headersself.ttwid_webid_headers, verifyFalse, timeout3)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_urlttwid_webid_headers1[Cookie] f__ac_nonce{ac_nonce}; __ac_signature{ac_signature}; __ac_referer__ac_blankresponse requests.request(GET, req_url, headersttwid_webid_headers1, verifyFalse, timeout3)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, strictFalse)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, webidexcept (requests.exceptions.ProxyError, requests.exceptions.ReadTimeout,requests.exceptions.ConnectionError) as e:logging.error(e)time.sleep(5)return self.get_ttwid_webid(req_url)