Hostloc自动签到Python脚本

466次阅读
没有评论

共计 2517 个字符,预计需要花费 7 分钟才能阅读完成。

提醒:本文最后更新于 2022-12-29 22:00,文中所关联的信息可能已发生改变,请知悉!

说明

支持金钱显示,支持多用户,支持无服务器函数

开始

安装 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
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 + '://www.hostloc.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1'
    My_Credit = proto + '://www.hostloc.com/home.php?mod=spacecp&ac=credit&showcredit=1&inajax=1'
    My_Home = proto + '://www.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 + '://www.hostloc.com/space-uid-{}.html'.format(x), My_Cookies)
        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)])
        except:
            continue

创建自动执行签到任务
在宝塔面板创建一个 Shell 脚本自动计划任务

脚本内容;

cd /www/wwwroot/sunpma.com/xxx
#进入 hostloc.py 文件所在目录的绝对路径
python3 ./hostloc.py
#执行签到任务

创建完成后点击执行,等待执行完成后查看日志,如果没有问题就可以了

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

转自:http://MoeClub.org , 本文链接:https://www.ooly.cc/index.php/vps/Python.html

正文完
 2
alecctv
版权声明:本站原创文章,由 alecctv 2020-01-11发表,共计2517字。
转载说明:除特殊说明外本站文章皆由ooly.cc发布,转载请注明出处。
评论(没有评论)
验证码