小红书x-s更新版0531

今天又更新了,分析流程不再复写。

可以看之前文章:http://www.lxspider.com/?p=324

file

主要生成流程变动不大,一些计算参数更新,增加了canvas和webGL一些方法和属性。

请求部分

import requests
import execjs
import json

def feed(source_note_id,web_session,a1):
    headers = {
        "accept":"application/json, text/plain, */*",
        "cache-control":"no-cache",
        "content-type":"application/json;charset=UTF-8",
        "cookie":f"a1={a1}; web_session={web_session};",
        "origin":"https://www.xiaohongshu.com",
        "referer":"https://www.xiaohongshu.com/",
        "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
        "x-b3-traceid":"a31fffc0ee4f5d8f",
        "x-s-common":"",
    }
    data = {"source_note_id":source_note_id}
    exc = execjs.compile(open('xs20230531.js', 'r', encoding='utf-8').read())
    xs_xt = exc.call('get_xs','/api/sns/web/v1/feed',data,a1)
    xs_xt['X-t'] = str(xs_xt['X-t'])
    headers.update(xs_xt)
    feed = 'https://edith.xiaohongshu.com/api/sns/web/v1/feed'
    print(requests.post(url=feed, data=json.dumps(data, separators=(",", ":")), headers=headers).text)

def aweme(user_id,websession,a1):
    url = f'https://edith.xiaohongshu.com/api/sns/web/v1/user_posted?num=30&cursor=&user_id={user_id}'
    exc = execjs.compile(open('xs20230531.js', 'r', encoding='utf-8').read())
    xs_xt = exc.call('get_xs',f'/api/sns/web/v1/user_posted?num=30&cursor=&user_id={user_id}',None,a1)
    headers={
        "accept": "application/json, text/plain, */*",
        "accept-encoding": "gzip, deflate, br",
        "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-US;q=0.7",
        "cache-control": "no-cache",
        "cookie":f"a1={a1}; web_session={websession}",  
        "f": "58",
        "origin": "https://www.xiaohongshu.com",
        "pragma": "no-cache",
        "referer": "https://www.xiaohongshu.com/",
        "sec-ch-ua": "\"Chromium\";v=\"110\", \"Not A(Brand\";v=\"24\", \"Google Chrome\";v=\"110\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-dest": "empty",
        "sec-fetch-mode": "cors",
        "sec-fetch-site": "same-site",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36",
        "x-b3-traceid": "9ac6343913834a97",
        "x-s": "1gFGZBkJ0jTKslZkOjdBsBvpZYsLs6sL1B5iOBU60jT3",
        "x-t": "1678676475886"
    }
    xs_xt['X-t'] = str(xs_xt['X-t'])
    headers.update(xs_xt)
    print(requests.get(url=url, headers=headers).text)

if __name__ == '__main__':
    web_session = "030037a345b1535713616ba30e234a8f99377b"
    a1 = "188706f0ceb9v7auxthde944berpka92l8vw5534550000107754"
    feed("62d4e8a800000000120019dd",web_session,a1)
    aweme('54cef5662e1d935ac4b3f554',web_session,a1)

更新的JS

【温馨提示:此处隐藏内容需要付费订阅后才能查看!】

点赞
  1. jt说道:
    Google Chrome Windows 10
    现在还能用吗? :tushe:
  2. mingze说道:
    Google Chrome Mac OS X 10.15.7
    小红书的滑块验证有解决方案吗?
  3. hansonlet说道:
    Google Chrome Mac OS X 10.15.7
    大佬,我用这里的代码+最新的xs跑,返回-100登陆已过期。后来看应该是需要重新生成web_session+a1,使用http://www.lxspider.com/?p=257这里的register_session()想生成web_session发现请求code是-1。想请教下我这个调试思路对吗?如果对的话现在如何获取web_session+a1呢
    1. Lx Lx说道:
      Google Chrome Windows 10
      那个随机生成的不行了,现在web_session需要注册的
      1. hansonlet说道:
        Google Chrome Mac OS X 10.15.7
        http://www.lxspider.com/?p=257 是这里register_Id里的那个随机数要改成注册的特定字符串吗?求问有哪里有资料可以学习下如何注册嘛
  4. wangzai说道:
    Google Chrome Windows 10
    博主,这个方案现在还能用吗
    1. ospider说道:
      Google Chrome Mac OS X 10.15.7
      好像已经失效了……
      1. Lx Lx说道:
        Google Chrome Windows 10
        没有失效。
      2. DaGlue说道:
        Google Chrome Windows 10
        没有失效,可以试试登陆后的websession和固定的a1,记得不要用代理
  5. ospider说道:
    Google Chrome Mac OS X 10.15.7
    大佬,搜索是必须登录吗?
    1. Lx Lx说道:
      Google Chrome Windows 10
      是的
  6. supperman1说道:
    Google Chrome Mac OS X 10.15.7
    大佬。有具体补环境的过程么?
    1. Lx Lx说道:
      Google Chrome Windows 10
      http://www.lxspider.com/?p=324
      1. supperman1说道:
        Google Chrome Windows 10
        一定要改动JS源文件才能补么?看的云里雾里了 :xinsui:
  7. mingze说道:
    Google Chrome Mac OS X 10.15.7
    大佬知道小红书是怎么判断哪些帖子是需要置顶的吗
    1. Lx Lx说道:
      Google Chrome Windows 10
      不知道,大概是内容质量\互动量\时间因素这些吧
  8. 王虾片 王虾片说道:
    Google Chrome Windows 10
    我用的最新的web_session和a1,js文件也是最新的,然后执行示例代码,但是得到的结果是 {"code":-1,"success":false}
    1. Lx Lx说道:
      Google Chrome Windows 10
      发我看看
      1. 王虾片 王虾片说道:
        Google Chrome Windows 10
        只改了下面这几行代码,其他的没动 if __name__ == '__main__': web_session = "040069b294a064ccf5b6c168b8364bd36e185f" a1 = "1851614a0e2l8kplms78trfjpl7jp0sve8cferm6w00000635578" feed("647b13f50000000027011ff9",web_session,a1) aweme('6279eade000000002102006c',web_session,a1)
        1. Lx Lx说道:
          Google Chrome Windows 10
          没问题,我这里可以正常返回。你把js里面最后的console.log删除下
          1. 王虾片 王虾片说道:
            Google Chrome Windows 10
            牛批,把console.log删除了就好了。 :good:
          2. txz666说道:
            Google Chrome Windows 10
            大佬,厉害啊,我也是刚刚把那个console.log删了就可以了,请问这是为啥啊
          3. Lx Lx说道:
            Google Chrome Windows 10
            可能是console.log写入到了 Python 的输出流中,影响了Python结果
        2. Lx Lx说道:
          Google Chrome Windows 10
          可以来聊天室沟通下。
          1. ospider说道:
            Google Chrome Mac OS X 10.15.7
            聊天室在哪儿啊?
  9. 祥子说道:
    Google Chrome Mac OS X 10.15.7
    大佬,碰到个诡异的问题, 代码跑一遍流程(activate/notedetail或其他)都没问题,循环第二次再签名的x-s服务端就会406,不给任何数据, 还有就是这个签出来的X-S/activate的web_session只能用一次,之后在访问也是406,不知道是哪里有问题 :han:
    1. Lx Lx说道:
      Google Chrome Windows 10
      是不是调用JS的时候把全局变量缓存起来了,导致第一次执行的结果影响了后续的调用流程
      1. 祥子说道:
        Google Chrome Mac OS X 10.15.7
        我是node的环境,将get_xs方法export出来了,然后在外部调用 第一次 get_xs, activate后能够正常获取到web_session,然后再次get_xs和web_session,能够正确调用相应的API 循环第二次以后再get_xs,就是406了 我现在是讲整个签名算法封装成一个方法,每次调用时都重新初始化一次,能够正确签名,只是效率有点低 :lei:
      2. 祥子说道:
        Google Chrome Mac OS X 10.15.7
        过程中没有别的变量缓存,应该是签名的某个步骤影响了上下文的变量,导致签名的结果不正确 :yiwen:
        1. Lx Lx说道:
          Google Chrome Windows 10
          你先固定一个a1和session,在其他接口测x-s是否正确。如果x-s能用就是export的问题了
  10. shark说道:
    Google Chrome Mac OS X 10.15.7
    大佬能不能看一下搜索接口的search_id是怎么加密的
    1. Lx Lx说道:
      Google Chrome Windows 10
      http://www.lxspider.com/?p=419
  11. 阿道说道:
    Google Chrome Windows 10
    小红书现在会出现验证码,大家都是怎么避免的
  12. HansBurger说道:
    Google Chrome Windows 10
    大佬这是啥错啊 :guai: execjs._exceptions.ProgramError: SyntaxError: 语法错误
    1. Lx Lx说道:
      Google Chrome Windows 10
      语法错误,装个>14的nodejs。
  13. 派大鑫说道:
    Google Chrome Windows 10
    大佬能不能看一下搜索接口的search_id是怎么加密的
    1. 阿道说道:
      Google Chrome Windows 10
      web端现在还有搜索接口?
      1. 派大鑫说道:
        Google Chrome Windows 10
        有把,登录了就能搜索
    2. shark说道:
      Google Chrome Mac OS X 10.15.7
      同求
    3. Lx Lx说道:
      Google Chrome Windows 10
      http://www.lxspider.com/?p=419
  14. azhan说道:
    Google Chrome Windows 10
    把js文件最后的console.log删除就行了。。。+1
    1. King杨CN说道:
      Google Chrome Windows 10
      +1
  15. luoyu luoyu说道:
    Google Chrome Windows 10
    :zhenbang:
  16. DaGlue说道:
    Google Chrome Windows 10
    遇到的小问题和解决方案: 第一次请求可以,之后的请求就会报错3000015,排查后找到的原因是请求每次都去生成了新的a1,应该使用固定的一个a1即可避免该问题。
    1. Lx Lx说道:
      Google Chrome Windows 10
      a1要和web-session对应
  17. sshly说道:
    Google Chrome Windows 10
    大佬 能不能更新一期xhs的cookie生成啊
    1. Lx Lx说道:
      Google Chrome Windows 10
      之前写过了不想写了。主要还是这些参数ProfileData、a1、x-s-common、smidV2、gid等 http://www.lxspider.com/?p=220
      1. sshly说道:
        Google Chrome Windows 10
        好的 感谢佬。
  18. osin说道:
    Google Chrome Windows 10
    大佬,参考你的文章,看了插桩日志,x1=...;x2=...x3=...;x4=...进行base64之后似乎通过DES加密生成了payload。 因为在日志中看到了[16843776, 0, 65536, 16843780, 16842756, 66564, 4, 65536...]和(16) ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']等比较有特征的码表。但本人能力有限,分析不出是什么模式以及密钥、偏移量等关键信息,后续大佬能研究研究吗,感谢~ 我找到一个比较类似的算法:https://gist.github.com/hjzkenan110/0c9136635b10230ce46d2c7f606e0623
    1. Lx Lx说道:
      Google Chrome Windows 10
      可以呀 :hehe:
    2. marks说道:
      Google Chrome Mac OS X 10.15.7
      是3DES加密,但算法被魔改了,只能自己还原这个算法
  19. junhan说道:
    Google Chrome Windows 10
    大家看最新更新的代码,请求部分header一定要替换你自己抓包的,每一个参数都不要漏
  20. Nevaeh说道:
    Google Chrome Windows 10
    x-s参数 js调用好像只有600位 返回code:-1 报错
    1. Lx Lx说道:
      Google Chrome Windows 10
      给这个加上 _ace_d2389["appId"] = 'xhs-pc-web'
      1. 阿道说道:
        Google Chrome Windows 10
        能截图发下你成功的例子代码,我对照看看是什么原因导致出错
        1. 阿道说道:
          Google Chrome Windows 10
          用了你发的代码,改了a1和web_session 还是提示浏览器异常。。。
          1. Lx Lx说道:
            Google Chrome Windows 10
            我这跑一天了,其他人也没啥问题呀
          2. 阿道说道:
            Google Chrome Windows 10
            问题找到了,我把js文件最后的console.log删除就行了。。。
          3. Lx Lx说道:
            Google Chrome Windows 10
            ...可能是console.log写入到了 Python 的输出流中,影响了Python结果
  21. 听雨说道:
    Google Chrome Mac OS X 10.15.7
    大佬,x-s参数正确,还是报错:{"code":300015,"success":false,"msg":"浏览器异常,请尝试关闭/卸载风险插件或重启试试!","data":{}} 其他参数都和抓包的一致了
    1. Lx Lx说道:
      Google Chrome Windows 10
      如果确定x-s正确,你看看是不是data格式问题
      1. 听雨说道:
        Google Chrome Mac OS X 10.15.7
        确实是data格式问题,json.dumps(data, separators=(',', ':'), ensure_ascii=False),这样就没问题了,感谢大佬
        1. 阿道说道:
          Google Chrome Windows 10
          兄弟,你可以了,能看看你的x-s是几位吗,我生成的是600位,抓包是628位,用抓包的x-s有正确数据,生成的还是 浏览器异常
          1. Lx Lx说道:
            Google Chrome Windows 10
            少28位是少加了 _ace_d2389["appId"] = 'xhs-pc-web' 。异常是因为你的a1和web_session
  22. 阿道说道:
    Google Chrome Windows 10
    是不是就是换个js文件就行,原有的不变?但还是报错,查询了下,生成的x-s比抓包的少了28位数
    1. Lx Lx说道:
      Google Chrome Windows 10
      这个是少加了 _ace_d2389["appId"] = 'xhs-pc-web' 导致的,不影响使用。还返回300015是因为a1和web_session
      1. 阿道说道:
        Google Chrome Windows 10
        加了,是628位了;但我也不知道什么原因,用无痕浏览器抓包了几次a1和web_session生成x-s都不行,但用抓包的x-s就可以
        1. junhan说道:
          Google Chrome Windows 10
          检查headers参数是否都对应,代码没问题的
          1. 阿道说道:
            Google Chrome Windows 10
            都是用最新抓包的,你的是好的能把你的headers参数贴一下,cookie包含a1这就不用贴
        2. wendy说道:
          Google Chrome Windows 10
          老哥,_ace_d2389["appId"] = 'xhs-pc-web'加在哪边
          1. Lx Lx说道:
            Google Chrome Windows 10
            代码调试的位置,garp_a3d40 = _garp_73234(p2, p3)
  23. ukuleelee说道:
    Google Chrome Mac OS X 10.15.7
    除了修改webSession还要修改什么,我现在抛了这个异常 {"code":300015,"success":false,"msg":"浏览器异常,请尝试关闭/卸载风险插件或重启试试!","data":{}}
    1. Lx Lx说道:
      Google Chrome Windows 10
      a1

发表回复