V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
XueSeason
V2EX  ›  程序员

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

  •  
  •   XueSeason · 2017-04-07 10:27:01 +08:00 · 14380 次点击
    这是一个创建于 2784 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    使用方法

    # 登录操作
    ./app.js -l -u 49****[email protected] -p *****
    
    # 下载本人相册
    ./app.js -d
    
    # 下载指定用户 id 相册
    ./app.js -d -i 4413**450
    
    55 条回复    2017-04-10 09:15:13 +08:00
    isphone
        1
    isphone  
       2017-04-07 10:41:58 +08:00 via iPhone   ❤️ 1
    人人网死了?
    likuku
        2
    likuku  
       2017-04-07 10:46:53 +08:00   ❤️ 1
    因为人人网必须注册才能访问,所以从来就没注册过。
    XueSeason
        3
    XueSeason  
    OP
       2017-04-07 10:51:30 +08:00   ❤️ 1
    @isphone 人人快死了。
    nieyujiang
        4
    nieyujiang  
       2017-04-07 10:52:44 +08:00 via iPhone   ❤️ 1
    懒得注册+1
    minamike
        5
    minamike  
       2017-04-07 10:56:34 +08:00
    我的相册都是黑历史 早就被我删掉注销了
    Khlieb
        6
    Khlieb  
       2017-04-07 11:00:17 +08:00 via Android   ❤️ 1
    @isphone 半死不活了吧
    Lothar
        7
    Lothar  
       2017-04-07 11:07:23 +08:00
    试用了下,挺好用的,只是莫名中断了几次,然后只能从头重新下载。。。感觉可以维护一个 json 存下哪些已经下载了,断了就不用重下了。然后异常是不是没捕获全,所以才挂了几次。总体还是挺不错的,给 Star 。
    XueSeason
        8
    XueSeason  
    OP
       2017-04-07 11:11:56 +08:00
    @Lothar 因为是快速做出的小 Demo ,并没有考虑太多因素。后面我会慢慢完善的。还是非常感谢。
    loryyang
        9
    loryyang  
       2017-04-07 11:35:48 +08:00
    赞~我去研究下 LZ 的代码
    lixile
        10
    lixile  
       2017-04-07 11:46:40 +08:00
    。。当初 还玩得多 人人有很多有趣的故事 能爬吗
    ys0290
        11
    ys0290  
       2017-04-07 11:48:00 +08:00 via iPhone   ❤️ 1
    前几天还登陆过,杳无人烟……
    XueSeason
        12
    XueSeason  
    OP
       2017-04-07 11:51:33 +08:00
    @lixile 理论上,模拟登录后,只要你能看到的,基本都可以爬。目前我只是觉得相册这一块比较重要,其实也可以爬动态。
    XueSeason
        13
    XueSeason  
    OP
       2017-04-07 11:53:38 +08:00
    @loryyang 谢谢,如果你能研究出其他的玩法,欢迎 PR
    fancymax
        14
    fancymax  
       2017-04-07 12:03:29 +08:00 via iPhone
    强烈支持,能否把动态爬下来
    isphone
        15
    isphone  
       2017-04-07 12:35:37 +08:00
    @XueSeason 芭莎娱乐公号发文"人人网将关闭" 被判赔 2 万余元 http://news.sina.com.cn/sf/news/ajjj/2017-01-25/doc-ifxzusws0232659.shtml 祝楼主平安
    yuyu2140
        16
    yuyu2140  
       2017-04-07 13:02:08 +08:00
    刚登录下人人,找了点回忆
    xenme
        17
    xenme  
       2017-04-07 13:04:02 +08:00   ❤️ 1
    很早已经已经用脚本,删掉了所有信息,然后弃用了,因为没法注销。
    coderwan
        18
    coderwan  
       2017-04-07 13:30:36 +08:00
    技术改变生活
    realpg
        19
    realpg  
       2017-04-07 13:31:20 +08:00   ❤️ 3
    上同学,找人人
    hjdtl
        20
    hjdtl  
       2017-04-07 14:00:09 +08:00
    请问怎么开启? Windows 里我用终端执行命令会报错。
    findex
        21
    findex  
       2017-04-07 14:04:58 +08:00 via iPhone
    @XueSeason 还有多久?这就挂了啊
    yangxin0
        22
    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
        23
    cxbats  
       2017-04-07 14:19:42 +08:00
    我之前也写过一个类似的东西,不过是爬某个好友的状态和图片...
    https://github.com/WillSkywalker/Shikhandi
    yangxin0
        24
    yangxin0  
       2017-04-07 14:20:30 +08:00
    @cxbats 前几周换了接口,你这个应该无法登录了
    GOOD21
        25
    GOOD21  
       2017-04-07 14:25:36 +08:00
    好使,感谢!
    XueSeason
        26
    XueSeason  
    OP
       2017-04-07 15:10:06 +08:00
    @hjdtl 没测试过 Windows 环境,其实只要稍微改下 app.js ,在 windows 下也是可以跑的。
    XueSeason
        27
    XueSeason  
    OP
       2017-04-07 15:10:59 +08:00
    @yangxin0 因为抓包的时候,不太确定这个加密过程是 RSA 。请问你是如何得知的?
    Nobitasean
        28
    Nobitasean  
       2017-04-07 15:15:08 +08:00
    注册要巴拉巴拉好多东西
    fsgmhoward
        29
    fsgmhoward  
       2017-04-07 15:18:55 +08:00 via iPhone   ❤️ 1
    还有一个开心网 也快死了吧
    Quaintjade
        30
    Quaintjade  
       2017-04-07 15:39:47 +08:00   ❤️ 1
    注册过人人网最烦的就是会被大街网骚扰,都是千橡旗下的,资料通用。
    根本没注册过大街网,还是会经常收到邮件“某某,你有一个职位邀请,点击查看”,点开就是个注册页,根本没有职位邀请。

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

    学 FaceBook 结果自己死了。
    感觉好可怜。
    a302800411
        38
    a302800411  
       2017-04-07 17:21:07 +08:00
    一直纳闷一个问题,为什么移动互联网时代,没有一家校园社交做得好的公司,校园社交到底是不是伪命题
    nevin47
        39
    nevin47  
       2017-04-07 17:38:25 +08:00
    为什么我怎么折腾都会报这个错……
    nevin47
        40
    nevin47  
       2017-04-07 17:38:40 +08:00   ❤️ 1
    ‘’‘
    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)
    ‘’‘
    laoyuan
        41
    laoyuan  
       2017-04-07 18:01:40 +08:00
    同 LS ,我忘了 node 怎么用了,是不是先要执行什么安装命令?
    laoyuan
        42
    laoyuan  
       2017-04-07 18:05:04 +08:00
    @nevin47 npm install
    XueSeason
        43
    XueSeason  
    OP
       2017-04-07 18:08:12 +08:00
    @nevin47 首先要安装好最新的 node 环境,注意版本要求。然后进入项目,执行 npm install
    eseeker
        44
    eseeker  
       2017-04-07 19:59:58 +08:00 via Android
    @a302800411 就是,腾讯的朋友网也是半死不活。
    mingyun
        45
    mingyun  
       2017-04-07 23:47:16 +08:00   ❤️ 1
    后悔人人账号注销了,找不回相册了
    qtjay
        46
    qtjay  
       2017-04-08 09:48:32 +08:00
    qtjay
        47
    qtjay  
       2017-04-08 09:49:28 +08:00   ❤️ 1
    @mingyun 重新登陆就可以了,人人网不删数据的
    mingyun
        48
    mingyun  
       2017-04-08 10:00:33 +08:00
    @qtjay 果然可以重新登录,感谢,不过好奇注销账号它是怎么注销的
    stackboom
        49
    stackboom  
       2017-04-08 10:00:58 +08:00   ❤️ 1
    今天刚刚收到人人的广告邮件。 人人直播, 看到上面的妹子一张张网红脸....
    vamxmen
        50
    vamxmen  
       2017-04-08 13:58:07 +08:00 via Android
    这个下载别人相册时需要权限么?
    XueSeason
        51
    XueSeason  
    OP
       2017-04-08 20:00:05 +08:00
    @vamxmen 有权限查看的照片都能下载到。没有权限的当然没办法。
    boter
        52
    boter  
       2017-04-09 15:16:59 +08:00
    人人死不了,人家改做互联网金融了,股票大涨很多了
    boter
        53
    boter  
       2017-04-09 15:22:52 +08:00
    @boter 噢,没涨,只是调整 ADS 和 A 类股的比例了
    leisure
        54
    leisure  
       2017-04-10 07:47:40 +08:00
    password 中有括号的时候报错。。
    XueSeason
        55
    XueSeason  
    OP
       2017-04-10 09:15:13 +08:00
    @leisure 可是尝试在 Shell 中用引号。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3196 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 12:36 · PVG 20:36 · LAX 04:36 · JFK 07:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.