Hostloc论坛自动签到Python脚本

说明

  • 支持金钱显示
  • 支持多用户
  • 支持无服务器函数
  • 更新时间间隔

开始

安装 Python3

apt-get install python3-pip

新建一个名为hostloc.py的文件,然后在文件中写入以下代码
将其中的账号A替换成自己的,密码A也替换成自己的即可,多账号自行添加,注意前面的数字编号;
注意:不要用电脑的TXT记事本编辑,避免格式出错,直接在宝塔面板编辑即可;

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Author:  MoeClub.org

import re
import sys
import time
from urllib import request, parse
from http import cookiejar


account_dict = {
    '0': {'username': '账号A', 'password': '密码A'},
    '1': {'username': '账户B', 'password': '密码B'},
}


def Login(URL, UserData):
    _cookies = ''
    _cookie = cookiejar.CookieJar()
    _handler = request.HTTPCookieProcessor(_cookie)
    _req = request.Request(URL, data=parse.urlencode(UserData).encode('utf-8'))
    request.build_opener(_handler).open(_req)
    for cookie in _cookie:
        _cookies += cookie.name + '=' + cookie.value + ';'
    return _cookies


def GetPage(URL, Header_Cookies):
    _Header = {'Cookie': str(Header_Cookies)}
    _req = request.Request(URL, headers=_Header)
    return request.urlopen(_req).read().decode('utf-8')


def GetCredit(user_data, proto='https'):
    username = user_data['username']
    Login_URL = proto + '://hostloc.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1'
    My_Credit = proto + '://hostloc.com/home.php?mod=spacecp&ac=credit&showcredit=1&inajax=1'
    My_Home = proto + '://hostloc.com/home.php?mod=spacecp&inajax=1'
    My_Cookies = Login(Login_URL, user_data)

    if '<td>' + str(username) + '</td>' not in GetPage(My_Home, My_Cookies):
        print('[%s] Login Fail!' % username)
    else:
        try:
            CreditNum0 = str(re.findall('[0-9]+', GetPage(My_Credit, My_Cookies))[-1])
        except:
            CreditNum0 = 'Null'
        for x in range(25297, 25309):
            GetPage(proto + '://hostloc.com/space-uid-{}.html'.format(x), My_Cookies)
            time.sleep(4)
        try:
            if CreditNum0 == 'Null':
                raise Exception
            CreditNum1 = str(re.findall('[0-9]+', GetPage(My_Credit, My_Cookies))[-1])
            if CreditNum0 == CreditNum1:
                CreditDetails = str(CreditNum1)
            else:
                CreditDetails = str(CreditNum0) + '->' + str(CreditNum1)
        except:
            CreditDetails = 'Null'
        print('[%s] Login Success! (Credit: %s)' % (username, CreditDetails))


if __name__ == '__main__':
    if len(sys.argv) > 1:
        n = 0
        account_dict = {}
        account_list = [sys.argv[x] for x in range(1, len(sys.argv))]
        for account in account_list:
            if ":" not in account:
                continue
            account_dict[str(n)] = {}
            account_dict[str(n)]['username'] = str(str(account).split(":", 1)[0])
            account_dict[str(n)]['password'] = str(str(account).split(":", 1)[-1])
            n += 1
    for i in range(0, len(account_dict)):
        try:
            GetCredit(account_dict[str(i)])
            time.sleep(4)
        except:
            continue

创建自动执行签到任务

在宝塔面板自动任务创建一个Shell脚本自动计划任务
脚本内容:

# 进入hostloc.py文件所在目录的绝对路径
cd /home/Loc
# 执行签到任务
python3 ./hostloc.py

示例:

创建完成后点击执行,等待执行完成后查看日志,如果没有问题就可以了
提示:尽量将自动签到时间设定到半夜,白天论坛的CC防御规则严格,会使签到失败,设置在半夜就没问题了;
博主的签到日志:

----------------------------------------------------------------------------
★[2019-11-22 01:10:51] Successful
----------------------------------------------------------------------------
[xxx] Login Success! (Credit: 10669->10689)
[xxx] Login Success! (Credit: 2643->2663)
[xxx] Login Success! (Credit: 1105->1125)
----------------------------------------------------------------------------
★[2019-11-23 01:10:49] Successful
----------------------------------------------------------------------------
[xxx] Login Success! (Credit: 10692->10712)
[xxx] Login Success! (Credit: 2665->2685)
[xxx] Login Success! (Credit: 1127->1147)
----------------------------------------------------------------------------
★[2019-11-24 01:10:49] Successful
----------------------------------------------------------------------------
[xxx] Login Success! (Credit: 10722->10742)
[xxx] Login Success! (Credit: 2687->2707)
[xxx] Login Success! (Credit: 1149->1169)
----------------------------------------------------------------------------
最后修改:2024 年 07 月 01 日

发表评论

19 条评论

  1. ETC

    已失效 论坛开启tls了

  2. 加油

    大佬这个是不是不支持中文用户名登录呢?

  3. 演奏

    现在设置 晚上 1点 2点 4点 全部 Login Fail! 是不是脚本失效了啊

  4. gejiba

    好像失效了 现在

  5. seele

    大佬,你好,我问一个问题
    我想在一个和hostloc很像的网站也自动签到(貌似模板一样的)
    这个脚本我给怎么改呢?
    https://bbs.52pcgame.net/
    这个是网址

  6. seele

    大佬,一直失败这是为什么,时间是早上一点半

    1. sunpma
      @seele

      我都是设置到半夜4点左右,目前没有问题

  7. mjj

    请问这个脚本失效了吗?为什么我执行后的日志只有一行如下,积分也没有增加:

    ★[2020-08-21 08:03:20] Successful
    1. sunpma
      @mjj

      尽量将自动签到时间设定到半夜,白天论坛的CC防御规则严格,会使签到失败

  8. 至尊宝

    这个脚本挂了,有时间间隔了,大佬什么时候更新一下⌇●﹏●⌇

    1. sunpma
      @至尊宝

      已更新时间间隔

      1. 至尊宝
        @sunpma

        OK,能正常签到了,3Q

  9. ATzzz

    大佬..加个 Server酱 sc.ftqq.com 微信推送 通知 可以不..

  10. 高达哥

    大佬,能否设置个间隔时间,假如账号多的话的,

    1. sunpma
      @高达哥

      已更新时间间隔

  11. 8888

    自动签到脚本

  12. locmjj

    大佬,按照你的方法在宝塔里面搭建了,但是日志提示 Login Fail!,换了台VPS也是一样,这个如何解决?

    1. sunpma
      @locmjj

      提示:尽量将自动签到时间设定到半夜,白天论坛的CC防御规则严格,会使签到失败,设置在半夜就没问题了;

      1. 戴志诚
        @sunpma

        大佬你好,请问这个怎么改成其他论坛的自动签到呢?
        也是dz论坛,但是只需要登陆进去访问签到网址就可以了