Bilibili Live 闷声发大财

用途

自动向B站服务器发送心跳包,让服务器以为你一直在看直播从而实现24h挂机涨经验

食用方法

  1. 保存源代码为bilive.py并上传至服务器(当然你愿意在自己电脑上挂我也管不着)
  2. ssh输入crontab -e ,加入*/5 * * * * python 存放路径/bilive.py  > 存放路径/blive.log
  3. Enjoy!(Log保留最后一次的输出,如有问题请及时将log拷出回复我~)
  4. 服务器挂机用户建议将userid = raw_input()和pwd = raw_input()直接修改成你的用户名密码,防止cookie过期

此代码由于 Bilibili 验证码机制已失效,如需使用请尝试 METO 大佬的世界上最好的语言版本

源代码

#coding=UTF-8
import urllib
import urllib2
import cookielib
import json
import sys
import os
import re
import datetime
import time
reload(sys)
sys.setdefaultencoding('utf-8')
COOKIE_FILE = 'BILIVE_COOKIES_DATA'
def login(COOKIE_FILE):
    cookie = cookielib.MozillaCookieJar(COOKIE_FILE)
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))  
    response = opener.open('https://passport.bilibili.com/ajax/miniLogin/minilogin')
    print'Please input your bilibili Username:'
    userid = raw_input()
    print'Please input your bilibili Password:'
    pwd = raw_input()
    postdata = urllib.urlencode({
                'keep':'0',  
                'captcha':'',
                'userid':userid,
                'pwd':pwd
            })    
    loginUrl = 'https://passport.bilibili.com/ajax/miniLogin/login' 
    response = opener.open(loginUrl,postdata)
    liveUrl = 'http://live.bilibili.com/User/getUserInfo' 
    result = opener.open(liveUrl)
    cookie.save(ignore_discard=True, ignore_expires=True)
    return opener
def check_login(opener):
    liveUrl = 'http://live.bilibili.com/User/getUserInfo' 
    result = opener.open(liveUrl)
    result = result.read()
    s = json.loads(result)
    if s["code"] == "REPONSE_OK":
        return s
    else:
        print'Login Failed: ' + result.decode('unicode_escape')
        os.remove(COOKIE_FILE)
        time.sleep(3)
        exit()
def heart(opener):
    postdata = ''
    heartUrl = 'http://live.bilibili.com/User/userOnlineHeart'
    roomId = get_room_id(opener)
    refererHeader = 'http://live.bilibili.com/' + roomId
    opener.addheaders = [('Referer', refererHeader)]
    result = opener.open(heartUrl,postdata)
    result = result.read()
    return result

def get_room_id(opener):
    liveUrl = 'http://live.bilibili.com/'
    result = opener.open(liveUrl)
    result = result.read()
    res = re.search(r'data-roomid="(\d+)"', result)
    if res:
        return res.group(1)
    else:
        print'Get RoomId Failed'
        exit()

cookie = cookielib.MozillaCookieJar(COOKIE_FILE)   
if not os.path.exists(COOKIE_FILE):
    opener = login(COOKIE_FILE)
else:
    cookie.load(COOKIE_FILE, ignore_discard=True, ignore_expires=True)
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

s = check_login(opener)
print'Hello, '+s["data"]["uname"]+'!'
upr = str(s["data"]['user_next_intimacy'] - s["data"]['user_intimacy'])
result = heart(opener)
h = json.loads(result)
if h["code"] != 0:
    for x in xrange(1,6):
        print "Heart Status: Error, Retrying......("+ str(x) +")"
        if x != 5:
            time.sleep(2)
        else:
            time.sleep(10)
        result = heart(opener)
        h = json.loads(result)
        if h["code"] != 0:
            continue
        else:
            print 'Live Level: '+ str(s["data"]['user_level']) +'\nUpgrade requires: '+ upr +'\nLevel Rank: '+ str(s["data"]['user_level_rank']) +'\nHeart Status: Successful\nHeart Time: ' + time.strftime("%Y-%m-%d %H:%M:%S") + '\nDebug:'+ result.decode('unicode_escape')
            time.sleep(3)
            exit()
    print 'Live Level: '+ str(s["data"]['user_level']) +'\nUpgrade requires: '+ upr +'\nLevel Rank: '+ str(s["data"]['user_level_rank']) +'\nHeart Status: Error\nHeart Time: ' + time.strftime("%Y-%m-%d %H:%M:%S") + '\nDebug:'+ result.decode('unicode_escape')
else:
    print 'Live Level: '+ str(s["data"]['user_level']) +'\nUpgrade requires: '+ upr +'\nLevel Rank: '+ str(s["data"]['user_level_rank']) +'\nHeart Status: Successful\nHeart Time: ' + time.strftime("%Y-%m-%d %H:%M:%S") + '\nDebug:'+ result.decode('unicode_escape')

感谢 @latelan 为代码添加伪造 Referer 功能

经验计算方式

每5分钟可以获得3000点经验(B站活动期间可能更高)

关于特色图像

前往Y2B查看

203 条评论

昵称
  1. xd

    用的交易3.6,交易bilibili-live.py出错了,到底是用什么姿势打开QAQ

    1. drscrewdriver

      源代码一般没问题吧。。。把pyc缓存删了看看?

  2. Pingback: Bilibili 直播挂机脚本 - 秋名山の纸飞机

  3. 凯哥自媒体

    分享的不错,谢谢

  4. 超人欧巴

    还能玩吗?

    1. liwanglin12

      手动配cookies可以

  5. 咚咚咚ゞゞ

    已经没得玩儿了对吧!

    1. liwanglin12

      对!

      1. 萨摩公园

        手动 Cookie 继续撑……

      2. 沈大师

        求教怎么手动cookie?

      3. 萨摩公园

        登录 B 站后,按 F12,在 console 里输入 document.cookie 即可获取

      4. 沈大师

        感谢回复,但f12的那种cookie的格式和源码的MozillaCookieJar生成的完全不一样啊,需要用什么特定浏览器么?试了chrome和火狐生成的都不是那种啊

  6. S.A 突袭

    云打吗我记得要钱吧

    1. latelan

      按照这个cookie过期时间,充5元挡半年以上吧

      1. S.A 突袭

        不错,,,,

  7. gngd

    Login Failed: {"code":-101,"msg":"请先登录","data":[]}

    1. 沈大师

      好像是现在登陆新增了验证码的缘故

      1. latelan
      2. gngd

        难道我的姿势不对。。。

      3. gngd

        把交易环境升到2.7.10,出现这个怎么破_(:3」∠)_

      4. gngd

        已解决,氪金就好了。。。_(:3」∠)_

      5. liwanglin12

        对……没法修

  8. 沈大师

    失效了啊。登陆不上去了

  9. plume

    好像登陆要验证码了吧

  10. BIRD

    貌似失效了啊?我现在总是提示login faild

  11. 音乐视频解析站

    没有服务器咋弄

    1. 萨摩公园

      可以来用我的,有 PHP 空间就行了(逃

  12. 晓沉

    Get RoomId Failed

  13. 卢松松博客

    有创意