人人网可以死,当初的回忆不能死,爬取人人网相册

2017-04-07 10:27:01 +08:00
 XueSeason

发现人人网死了好久,于是写了个简单的爬虫把想要的相册都全部爬下来,顺便将代码开源,希望能帮助到大家。

https://github.com/XueSeason/renren-album

使用方法

# 登录操作
./app.js -l -u 49****94@qq.com -p *****

# 下载本人相册
./app.js -d

# 下载指定用户 id 相册
./app.js -d -i 4413**450
14381 次点击
所在节点    程序员
55 条回复
findex
2017-04-07 14:04:58 +08:00
@XueSeason 还有多久?这就挂了啊
yangxin0
2017-04-07 14:18:29 +08:00
我写过一个大规模人人爬虫程序, 一个建议不要使用混淆的代码,登录这一块使用的 RSA(非标准)对密码进行加密, 密钥的长度 256.

class RSAPubKey:
def __init__(self, exponent, modulo):
self.exponent = self.encode(exponent)
self.modulo = self.encode(modulo)

def encode(self, data):
return int(data, 16)


class RSAEncrypt:
def __init__(self, key):
self.key = key

def encrypt(self, text):
text = self.encode_text(text)
cipher = self.fast_exp(text, self.key.exponent, self.key.modulo)
return format(cipher, 'x')

def debug_bignum(self, num, prefix):
print("==> %s <%s>" % (prefix, format(num, 'x')))

def fast_exp(self, base, exponent, modulo):
result = 1
if exponent == 0:
return result
while exponent > 0:
if exponent & 1 == 1:
result = result * base % modulo
exponent /= 2
base = (base * base) % modulo
return result

def better_hex(self, num):
while num > 0:
pass

def encode_text(self, text):
if isinstance(text, int):
return text
result = 0
for c in text[::-1]:
result = result << 8
result += ord(c)
return result

if __name__ == '__main__':
expect = "24cf15330c44dae8846d386b97be97b278b42b2e54894c16dd682a8046c99bd8"
exponent = "10001"
modulo = "8cf5d22c6857c041a50947cf178b1519d5ab7befe7e523a0c93220c0a44593a9"
key = RSAPubKey(exponent, modulo)
rsa = RSAEncrypt(key)
cipher = rsa.encrypt("helloworld")
print "cipher: %s" % (cipher)
print "expect: %s" % (expect)
cxbats
2017-04-07 14:19:42 +08:00
我之前也写过一个类似的东西,不过是爬某个好友的状态和图片...
https://github.com/WillSkywalker/Shikhandi
yangxin0
2017-04-07 14:20:30 +08:00
@cxbats 前几周换了接口,你这个应该无法登录了
GOOD21
2017-04-07 14:25:36 +08:00
好使,感谢!
XueSeason
2017-04-07 15:10:06 +08:00
@hjdtl 没测试过 Windows 环境,其实只要稍微改下 app.js ,在 windows 下也是可以跑的。
XueSeason
2017-04-07 15:10:59 +08:00
@yangxin0 因为抓包的时候,不太确定这个加密过程是 RSA 。请问你是如何得知的?
Nobitasean
2017-04-07 15:15:08 +08:00
注册要巴拉巴拉好多东西
fsgmhoward
2017-04-07 15:18:55 +08:00
还有一个开心网 也快死了吧
Quaintjade
2017-04-07 15:39:47 +08:00
注册过人人网最烦的就是会被大街网骚扰,都是千橡旗下的,资料通用。
根本没注册过大街网,还是会经常收到邮件“某某,你有一个职位邀请,点击查看”,点开就是个注册页,根本没有职位邀请。

话说前些天还收到大街网阴魂不散的垃圾骚扰短信,“ XXX 公司招聘负责人亲自给您发了一封职位邀请,可优先面试,接受: d-j.me/xxxxxxx 回复 TD 退订”
Kusanagi
2017-04-07 15:43:39 +08:00
@minamike 人人没法完全注销,注销了还可以重新启用
laoyuan
2017-04-07 15:50:40 +08:00
是大图吧?
minamike
2017-04-07 16:30:57 +08:00
@Kusanagi 反正黑历史删光了 无所谓(摊手
loryyang
2017-04-07 16:40:37 +08:00
@XueSeason 研究了很久,没用过 node js ,搞起来太吃力了。。
yangxin0
2017-04-07 16:44:30 +08:00
@XueSeason 看参数名字 e 、 m 这种事 RSA 才会使用的
loryyang
2017-04-07 16:45:38 +08:00
@cxbats 壮哉我大 python ,我还是研究这个代码吧。
wclebb
2017-04-07 17:15:27 +08:00
人人网注册过但没有进去发过一次。
不过人人网的确应该提供备份。

学 FaceBook 结果自己死了。
感觉好可怜。
a302800411
2017-04-07 17:21:07 +08:00
一直纳闷一个问题,为什么移动互联网时代,没有一家校园社交做得好的公司,校园社交到底是不是伪命题
nevin47
2017-04-07 17:38:25 +08:00
为什么我怎么折腾都会报这个错……
nevin47
2017-04-07 17:38:40 +08:00
‘’‘
module.js:472
throw err;
^

Error: Cannot find module 'commander'
at Function.Module._resolveFilename (module.js:470:15)
at Function.Module._load (module.js:418:25)
at Module.require (module.js:498:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/Users/nevin47/Downloads/renren-album-master/app.js:6:17)
at Module._compile (module.js:571:32)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
‘’‘

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/353129

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX