whusnoopy / renrenBackup

A backup tool for renren.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Need PR:人人网 2021.05 改版后提供了日志和相册新 API

whusnoopy opened this issue · comments

人人网于 2021 年 5 月对 Web 端进行了大改版,本工具当前版本(2021.06 及以前)已不可用

不过在新版里,对日志列表和相册列表,提供了新的 API 如下

http://rrwapi.renren.com/feed/v1/blogs
http://rrwapi.renren.com/feed/v1/albums

但日志详情页还是 HTML 直接渲染,相册详情页还未细看其返回结构

人人网好像已经不再用cookies来保持会话了,而是通过分发sessionKey和secretKey的方式进行每次的身份验证

来晚了一步人人网改版,这么好的工具失而复得更痛苦。。。大龄中年求更新,不然真的只能靠手工截图备份了……

估计是随机数时间戳加盐

@whusnoopy 今天偶然想备份下自己之前的黑历史,研究明白了目前的认证算法。可以根据我以下的研究更新代码

WechatIMG4

登陆后Cookie 中有一项叫做LOCAL_STORAGE_KEY_RENREN_USER_BASIC_INFO
这里面可以拿到secretKeysessionKey

拿相册API举例

API 地址 https://rrwapi.renren.com/feed/v1/album
需要POST请求。内容为JSON格式。

{
    "after": "",
    "uid": 00000000,  // 用户的个人ID
    "album_id": "000000000", // 相册ID,可以从相册列表API得到
    "product_id": 2080928, // 这个不知道哪里来的,应该是相同的
    "app_ver": "1.0.0", // 这个也可以完全相同
    "count": 10, // 分页用的,可以改大
    "appKey": "bcceb522717c2c49f895b561fa913d10", // 这个应该是Web UI的appKey, 可以直接拿来用
    "sessionKey": "xxxxxxxxxxxx", // 从cookie里面拿到
    "callId": "1639307465257", // 时间戳,随便搞一个时间戳即可
    "sig": "xxxxxxxxxxxxxxxx" // 这个是签名戳,生成方法参考下面说明
}

生成sign

将请求的JSON(不含sig) 按照key的字母先从小到大排序。
然后将key和value 组成这样的形式, 遍历所有key和value, 生成一个字符串

${key1}=${value1}${key2}=${value2}

接着将这段字符串加上之前cookie里面的secretKey.

把整个字符串进行md5, 然后就得到了sig 的MD5值,把它插到之前的JSON里面发送请求即可

我测试过这个算法可用,生成的sig和系统生成的一致。好久没写python, 所以也懒得提交PR。

希望对这个项目和大家有所帮助。

此外建议大家备份完成后,先尝试删除数据再进行注销(我个人有点担心他这个注销还是软删除)

我根据楼上的方法fork一个
https://github.com/ruotianluo/renrenBackup。
但是因为login的逻辑不会,现在login只能通过在网页端log然后复制headers来模拟。


login改成了用户名密码了