Python は、Xiaohongshu トラフィック (Little Eye Notes への訪問)、metrics_report インターフェイス、原理とコード、および xs 署名検証をブラシします 2023-08-21

1. リトルアイズノートへのアクセス数はどれくらいですか?


  以下の図にあるように、noteの訪問数です。

 2. Little Eye Notes Visits インターフェイス


1、URL

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

2、ペイロード

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;
afterテストの結果、これら 4 つのフィールドを除いて、他のフィールドは固定されていることがわかりました。

2. 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)    

3. ノートへのアクセス数を継続的に増やす方法(訪問者のIDとセッションを動的に登録する)


1. metrics_report インターフェイス経由で POST リクエストを送信します。リクエストごとに訪問数が 1 ずつ増加し、APP は同期的に更新されます。
実際に測定したところ、viewer.user_idとweb_sessionを固定にして10回程度複数回POSTを行った場合、リトルアイズへのアクセス数は増加しません。
その理由は、同じセッション内の同じ訪問者の訪問数が制限されているためです。したがって、viewer.user_id 訪問者と web_session セッションは動的に生成される必要があります。
さまざまな訪問者とセッションを構築すると、リトル アイズへの訪問数がさらに増加する可能性があります。テクノロジー~~サポート: v+: byc6352
2. 異なる訪問者 ID とセッションを動的に生成
register_session() は 4 つのパラメーターを返します: a1、webId、viewer_id、web_session
この関数は訪問者セッションを登録し、訪問者 ID として viewer_id を返し、web_session はセッション識別子。
a1、webId は Cookie の必須パラメータです。
このようにして、POST 訪問ごとに異なる訪問者 ID とセッションが使用され、同時にプロキシが開かれて IP が動的に変更され、異なる訪問者をシミュレートできます。 ID とセッションが増加し、トラフィックが増加します。

4. metrics_report インターフェイス呼び出しが正常に返されます。

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

 

おすすめ

転載: blog.csdn.net/byc6352/article/details/132404242