python刷小红书流量(小眼睛笔记访问量),metrics_report接口,原理及代码,以及x-s签名验证2023-08-21

一、什么是小眼睛笔记访问量


  如下图所示,为笔记访问量。

 二、小眼睛笔记访问量接口


1、url

https://edith.xiaohongshu.com/api/sns/web/v1/note/metrics_report

2、payload

data={
        "note_id": note_id,
        "note_type": note_type,
        "report_type": 1,
        "stress_test": False,
        "viewer": {
            "user_id": viewer_id,
            "followed_author": 0
        },
        "author": {
            "user_id": user_id
        },
        "interaction": {
            "like": 0,
            "collect": 0,
            "comment": 0,
            "comment_read": 0
        },
        "note": {
            "stay_seconds": 0
        },
        "other": {
            "platform": "web"
        }
    }

参数说明:
note_id:要刷的笔记ID;
note_type:笔记类别;1为图文;2为视频;
viewer.user_id:访问笔记的使用者ID;
author.user_id:笔记作者的ID;
经测试发现,除了这四个字段,其它字段固定不变。

二、python刷流量源代码

# -*- coding: UTF-8 -*-

import time
import requests
import json
import random,math
import execjs

def brush(note_id,note_type,user_id):
    a1,webId,viewer_id,web_session=register_session()          #动态注册一个访问者身份及会话    技术支持:v+:byc6352
    data={
        "note_id": note_id,
        "note_type": note_type,
        "report_type": 1,
        "stress_test": False,
        "viewer": {
            "user_id": viewer_id,
            "followed_author": 0
        },
        "author": {
            "user_id": user_id
        },
        "interaction": {
            "like": 0,
            "collect": 0,
            "comment": 0,
            "comment_read": 0
        },
        "note": {
            "stay_seconds": 0
        },
        "other": {
            "platform": "web"
        }
    }
    data_json=json.dumps(data,ensure_ascii=False, separators=(",", ":"))


    headers={
        "accept": "application/json, text/plain, */*",
        "content-type": "application/json;charset=UTF-8",
        "Referer": "https://www.xiaohongshu.com/",
        "Sec-Ch-Ua": "\"Not_A Brand\";v=\"99\", \"Google Chrome\";v=\"115\", \"Google Chrome\";v=\"115\"",
        "Sec-Ch-Ua-Mobile": "?0",
        "Sec-Ch-Ua-Platform": "\"Windows\"",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
        "X-S-Common": "2UQAPsHC+aIjqArjwjHjNsQhPsHCH0rjNsQhPaHCH0P1+jhIHjIj2eHjwjQgynEDJ74AHjIj2ePjwjQhyoPTqBPT49pjHjIj2ecjwjHAN0c1PaHVHdWMH0ijP/W98ePIweHIG/zTPeS0G08dJBYh8/bYqnTAPfRV40bVw/464Abd4nhMPeZIPecIweWhPjHVHdW9H0il+0DUP/GU+/LMw/WMNsQh+UHCHSY8pMRS2LkCGp4D4pLAndpQyfRk/SzbyLleadkYp9zMpDYV4Mk/a/8QJf4hanS7ypSGcd4/pMbk/9St+BbH/gz0zFMF8eQnyLSk49S0Pfl1GflyJB+1/dmjP0zk/9SQ2rSk49S0zFGMGDqEybkea/8QyDb7nfMb2pkoafl+zMSCnD4p2LMoLgYwySQi/nM8PrRrc/z+zMQT/Fzb4FMLcfk+2DMEnDz++rMgpgkyzFET/gkwySSTzfY+zrbh/D4+2bSC/gSyyDph/dkVypkryAzwySDM/gknyrExa/zwyDME/fkByLEopgkyzB+hnpzpPbkT//pyprEknfMayrMgnfY8pr8Vnnk34MkrGAm8pFpC/p4QPLEo//++JLE3/L4zPFEozfY+2D8k/SzayDECafkyzF8x/Dzd+pSxJBT8pBYxnSznJrEryBMwzF8TnnkVybDUnfk+PS8i/nkyJpkLcfS+ySDUnpzyyLEo/fk+PDEk/Szp2pSxzfTypFFF/pz32SSCLg4wyDM7/FziJrhUzg4ypr8infk02LMoz/mwPS8inD4+2rECL/QyzrrA/p4QPFMTng482DQT/dk3PrFUp/+8yDbE/gkpPrEgp/z+pr8xnDzzPFEonfTyzFMh/Fzz+LMLp/QwyDrMnSztJpSga/p82SkVnfkQPLRrGAQyzrET/D48+LMxyAmwpMki/F4b2rMga/bwpFLAngk3PpSgzgS+pMQTnfkwyLMx87YOpBYTnSzayLRLcfS8JLDU/D4bPFMoafSwpbDI/Dz3PpSTpflOprM7nfk+PrExz/p82SrUnpzz+rExpgY+prLI/LzDJLEEa0DjNsQhwsHCHDDAwoQH8B4AyfRI8FS98g+Dpd4daLP3JFSb/BMsn0pSPM87nrldzSzQ2bPAGdb7zgQB8nph8emSy9E0cgk+zSS1qgzianYt8p+1/LzN4gzaa/+NqMS6qS4HLozoqfQnPbZEp98QyaRSp9P98pSl4oSzcgmca/P78nTTL0bz/sVManD9q9z1J7+xJMcM2gbFnobl4MSUcdb6agW3tF4ryaRApdz3agWIq7YM47HFqgzkanTU4FSkN7+3G9PAaL+P8DDA/9LI4gzVP0mrnd+P+nprLFkSyS87PrSk8nphpd4PtMmFJ7Ql4BYcnLkSpfloNFS9zrzQyobL8M87/Fkl4opQ2rp0nS+N8p8M4eSQ4d8SpS8FnDS3JrTQyAYUJDr9qMSpqp8CNApSyS8F2fR/+g+/G7Qg2fcM8p+gGMmQ2o8SzbmFNFSbN9pf4gzBqSSnpLE1/r4Q2BRSpop7JBETP9ph8rpcanTg/FSkaBMlqAYraL+rqaTBpfRQyn+k8pmF+LSenfWFcDEAzomN8gYl4rbQPFbAyfq7qM40O/FjNsQhwaHCP0Z7+eq7+AHI+aIj2erIH0iAKc==",
        "X-B3-Traceid": get_traceid(),
        "Cookie": f"a1={a1};webId={webId};web_session={web_session}",
    }
    # 调用js签名文件。
    with open('xs20230530.js', 'r', encoding='utf-8') as f:
        js = f.read()
    crt = execjs.compile(js)
    xs_xt = crt.call('get_xs', '/api/sns/web/v1/note/metrics_report', data_json, a1)            #x-s数据签名
    xs_xt['X-t'] = str(xs_xt['X-t'])

    headers["X-S"] = xs_xt["X-s"]
    headers["X-T"] = xs_xt["X-t"]

    url="https://edith.xiaohongshu.com/api/sns/web/v1/note/metrics_report"
    res = requests.post(url, data=data_json.encode('utf-8'),headers=headers,proxies=proxies)    #通过代理访问
    print(res.text)


if __name__ == '__main__':
    note_id = "649ce647000000001300c901"       #要刷的笔记ID
    note_type=2                                                     #笔记类型为视频
    user_id= "640d1628000000001400dc4d"       #笔记作者
    #brush(note_id,note_type,user_id)
    i=1000  #刷1000次
    while i>0:
        brush(note_id,note_type,user_id)
        time.sleep(random.randint(3,5))  #每次随机间隔3至5秒
        i=i-1
        print(i)    

三、不断增加笔记访问量的方法(动态注册访问者身份及会话)


1、通过metrics_report这个接口发POST请求,每请求一次可使访问量加1,APP端同步更新。
实测发现,如果使用固定的viewer.user_id和web_session多次POST,大概10次左右,小眼睛访问量不会增加了。
原因是同一个访问者同一个会话刷访问量是有限的。因此必须动态生成viewer.user_id访问者和web_session会话。
构造不同的访问者和会话才能使小眼睛访问量不断增加!技术~~支持:v+:byc6352
2、动态生成不同的访问者身份及会话
register_session()返回四个参数:a1,webId,viewer_id,web_session
功能是注册一个访问者会话,返回viewer_id为访问者ID,web_session为会话标识。
a1,webId为cookie里需要的参数;
这样每次POST刷访问量都使用不同的访问者身份和会话,同时开代理动态改变IP,就能模拟出不同的访问者身份及会话,使流量增加。

四、metrics_report接口调用成功返回

{"msg":"成功","data":{"success":true},"code":0,"success":true}

猜你喜欢

转载自blog.csdn.net/byc6352/article/details/132404242