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 今天偶然想备份下自己之前的黑历史,研究明白了目前的认证算法。可以根据我以下的研究更新代码
登陆后Cookie 中有一项叫做LOCAL_STORAGE_KEY_RENREN_USER_BASIC_INFO
这里面可以拿到secretKey
和sessionKey
拿相册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改成了用户名密码了