S1作为铁打不动的华语第三动漫论坛,有的文章却需要阅读权限,而S1的升级渠道除了精品贴之外也只有在线时长和签到两个方式,前段时间又关闭了死鱼兑换人品的渠道,因此就连签到(氪金)升级这一条路也被封死了。

于是乎这样的挂机脚本应运而生,然而就算全天候24h挂机,要达到80的阅读权限也需要两百多天,可见S1管理层早已料到用户当中不乏程序猿。要是佛系积累时长,升级更是难上加难,遇事不决,轮子优先。这里从github上找了两个可以用来挂机的轮子,贴出核心代码。

用户界面相对良好的方法一

原repo

食用方法

  • 下载对标Chrome浏览器的ChromeDriver
  • 填入用户名和密码
  • python -u app.py
#coding=utf-8

from config import *
from selenium import webdriver
import os
import time

t = 0 # nap times

def clear_scr():
    if (os.name == 'nt'):
        os.system("cls")
    else:
        os.system('clear')


def start_bot( page ):
    global t
    page.get('https://bbs.saraba1st.com/2b/home.php?mod=spacecp&ac=credit&showcredit=1')
    page.implicitly_wait(30)
    while True:
        try:
            # Flush page
            clear_scr()
            print("刷新页面中...", flush=True)
            page.refresh()
            page.implicitly_wait(30)
            total_point = page.find_element_by_id('extcreditmenu').text
            user_group = page.find_element_by_id('g_upmine').text

            # Print log
            clear_scr()
            print("已经挂机 " + str(t * nap_time) + " 秒, ", end='')
            print("累计 " + str(int(t * nap_time / 60 / 60)) + "小时" + str(int(t * nap_time / 60 % 60)) + "分钟" + str(int(t * nap_time % 60)) + "秒")
            print("现有积分 " + total_point + " , " + user_group, flush=True)
            print("刷新间隔: " + str(nap_time) + " 秒", flush=True)

            # Wait for next flush
            t += 1
            time.sleep(nap_time)
        except:
            # If page error
            clear_scr()
            print("网页故障,将会在1分钟后重试...", flush=True)
            time.sleep(60)
            page.get('https://bbs.saraba1st.com/2b/home.php?mod=spacecp&ac=credit&showcredit=1')
            page.implicitly_wait(30)

def main():
    # Init
    clear_scr()
    print("初始化界面中...", flush=True)

    # Get page
    page = webdriver.Chrome()
    page.set_window_size(1000, 800)
    page.set_window_position(800, 100)
    page.get('https://bbs.saraba1st.com/2b/forum.php')
    page.implicitly_wait(30)

    try:
        # Login
        page.find_element_by_id('ls_username').send_keys(username)
        page.find_element_by_id('ls_password').send_keys(password)
        page.find_element_by_xpath('//*[@id="lsform"]/div/div/table/tbody/tr[2]/td[3]/button/em').click()
        page.implicitly_wait(30)
    except:
        print("页面初始化出现问题,请稍后重试", flush=True)
        return

    # Start upgrade
    time.sleep(3)
    start_bot(page)

if __name__ == "__main__":
    main()

简便易操作的方法二

原repo

食用方法

  • 填入cookie,在Test处填入用户名
  • python stageKeepLogin.py

注意事项

如果出现ascii报错的话,可以在开头加上一行# -*- coding: UTF-8 -*-
并在汉字的第一个引号前面加上u转为unicode编码

import requests
import time
import random


error=0
while 1:
    cookie = {
    'B7Y9_2132_auth':'This is your auth',
    'B7Y9_2132_saltkey':'This is your slatkey'
}
    try:
        res = requests.get('https://bbs.saraba1st.com/2b/forum-75-1.html',cookies=cookie)
        now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    except:
        time.sleep(60)
    if res.text.find('Test') != -1: # 替换成你的用户名
        print('['+now+'] '+'Logined')
        time.sleep(random.randint(120,480))
        if error!=0:
            error=0
    else:
        print('['+now+'] '+'Login failed!')
        error=error+1
        time.sleep(300)
        if error>=3:
            break