使用腾讯云云函数自动领hostloc积分
首先呢,应该先介绍下云函数: 云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。SCF 是实时文件处理和数据处理等场景下理想的计算平台。
腾讯SCF是由免费额度的,轻量使用完全够用,超量后费用也不算贵。每个月的免费额度,会在每月开始时刻重置,不会进行累积。每月计费时,会先抵扣免费额度,超出部分再进行后付费结算。
资源类型 | 每月免费额度 |
---|---|
资源使用量 | 40 万 GBs |
调用次数 | 100 万 次 |
下表标明在配置为不同内存时,函数可免费运行的时长:
内存(MB) | 免费时长(秒) |
---|---|
128 | 3,200,000 |
256 | 1,600,000 |
512 | 800,000 |
1024 | 400,000 |
1536 | 266667 |
利用这个免费额度,我们可以将很多小脚本放在上面运行,今天就来讲下如何使用scf云函数来获取 Hostloc 论坛积分(原理: 访问他人用户空间每次可以获得 2 积分,每天最多 20 积分 ,这个小脚本就是基于这一原理,使用代码模拟用户登录,然后随机访问用户空间来实现的 )
首先登录 腾讯云 SCF 控制台(在此之前要完成腾讯云 实名认证),点击左侧菜单栏的 函数服务
,接着点击顶栏的地区选择下拉框,选择 香港
,因为大陆区域在绑定域名时需要备案,如果你拥有已备案的域名,则可以选择国内,当然不绑定域名也可以使用。接着点击蓝色的 新建
按钮,创建函数。
然后自定义一个函数名,并选择python3.6环境,使用模板函数中的hello word即可

修改index.py文件为如下代码
import os import requests import time import random import re # 随机生成用户空间链接 def randomly_gen_uspace_url(): url_list = [] # 访问小黑屋用户空间不会获得积分、生成的随机数可能会重复,这里多生成两个链接用作冗余 for i in range(12): uid = random.randint(10000, 35000) url = "https://www.hostloc.com/space-uid-{}.html".format(str(uid)) url_list.append(url) return url_list # 登录帐户 def login(username, password): headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36" } login_url = "https://www.hostloc.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1" login_data = { "fastloginfield": "username", "username": username, "password": password, } s = requests.Session() s.post(url=login_url, data=login_data, headers=headers) return s # 通过抓取用户设置页面的标题检查是否登录成功 def check_login_status(s, number_c): test_url = "https://www.hostloc.com/home.php?mod=spacecp" res = s.get(test_url) res.encoding = "utf-8" test_title = re.findall("<title>.*?</title>", res.text) if test_title[0] != "<title>个人资料 - 全球主机交流论坛 - Powered by Discuz!</title>": print("第" + str(number_c) + "个帐户登录失败!") return False else: print("第" + str(number_c) + "个帐户登录成功!") return True # 依次访问随机生成的用户空间链接获取积分 def get_points(s, number_c): if check_login_status(s, number_c): url_list = randomly_gen_uspace_url() # 使用for和try/except实现当前链接访问出错时不中断程序继续访问下一个链接 for url in url_list: try: s.get(url) print("用户空间链接:" + url + " 访问成功") time.sleep(4) # 每访问一个链接后休眠4秒,以避免触发论坛的防cc机制 except Exception as e: print("链接访问异常:" + str(e)) continue else: print("请检查你的帐户是否正确!") def main_handler(event,context): username = os.environ.get('HOSTLOC_USERNAME') password = os.environ.get('HOSTLOC_PASSWORD') # 分割用户名和密码为列表 user_list = username.split(",") passwd_list = password.split(",") if len(user_list) != len(passwd_list): print("用户名与密码个数不匹配,请检查环境变量设置是否错漏!") else: print("共检测到" + str(len(user_list)) + "个帐户,开始获取积分") print("**************************************************") # 使用for和try/except实现当前用户获取积分出错时不中断程序继续尝试下一个用户 for i in range(len(user_list)): try: s = login(user_list[i], passwd_list[i]) get_points(s, i + 1) print("**************************************************") except Exception as e: print("获取积分异常:" + str(e)) continue print("程序执行完毕,获取积分结束") if __name__ == "__main__": main_handler("", "")

然后拉到底部,在高级配置中修改超时时间为60秒,并添加两个环境变量:
HOSTLOC_USERNAME HOSTLOC_PASSWORD

然后点击完成即可。之后来到触发方式,点击“添加触发方式”,并如下配置

点击完成即可,这样每天就都有积分进账啦。
共有 1 条看法