xiaohack's Blog - selenium
type: channel
link: https://blog.xiaohack.org/tag/selenium/
items: 雨云签到青龙脚本【多账号 + 过验证码】
items: Tiktok 用户主页 视频 和 评论 爬虫，基于Python selenium 库 和 playwright库两种方式。
items: gemini3pro 生图无限用
items: Gemini Business 注册机
items: 海克斯大乱斗数据抓取 (外服)
items: 分享一个企业备案查询的脚本-2

雨云签到青龙脚本【多账号 + 过验证码】
type: item
date: 2026-01-24T07:01:53+08:00
description: 接：雨云无限白嫖 FRP 服务器攻略（无 aff）@fatekey 大佬的方案是单独开一个容器，我想着反正我有青龙面板在跑脚本，站在巨人的肩膀上顺手写了一个，把多账户也写进来了一、运行效果先看实际运行的效果吧【前两个账号运行已签到，仅测试多账户切换功能，临时注册的第三个号用于测试签到功能】## 开始执行... 2026-01-23 16:57:53 2026-01-23 16:57:54.116950139 [W:onnxruntime:Default, cpuid_info.cc:91 LogEarlyWarning] Unknown CPU vendor. cpuinfo_vendor value: 16 2026-01-23 16:57:54,191 - INFO - -------------------------------------------------------------------------------- 2026-01-23 16:57:54,191 - INFO - 雨云签到工具 by SerendipityR ~ 2026-01-23 16:57:54,191 - INFO - Github发布页: https://github.com/SerendipityR-2022/Rainyun-Qiandao 2026-01-23 16:57:54,192 - INFO - -------------------------------------------------------------------------------- 2026-01-23 16:57:54,192 - INFO - 雨云签到工具容器版 by fatekey ~ 2026-01-23 16:57:54,192 - INFO - Github发布页: https://github.com/fatekey/Rainyun-Qiandao 2026-01-23 16:57:54,192 - INFO - -------------------------------------------------------------------------------- 2026-01-23 16:57:54,192 - INFO - 项目为二次开发青龙脚本化运行 2026-01-23 16:57:54,192 - INFO - 本项目基于上述项目开发 2026-01-23 16:57:54,192 - INFO - 本项目仅作为学习参考，请勿用于其他用途 2026-01-23 16:57:54,192 - INFO - -------------------------------------------------------------------------------- 2026-01-23 16:57:54,192 - INFO - ✅ 成功解析3个账号 2026-01-23 16:57:54,192 - INFO - ================= 处理第1个账号 ================== 2026-01-23 16:57:54,192 - INFO - ========== 开始处理账号：TACGN ========== 2026-01-23 16:57:54,192 - INFO - ⏳ 随机延时 0 分钟 35 秒 2026-01-23 16:58:29,794 - INFO - ✅ Selenium驱动初始化成功，路径：/usr/bin/chromedriver 2026-01-23 16:58:29,809 - INFO - ✅ 已注入stealth.min.js反检测脚本 2026-01-23 16:58:29,809 - INFO - ⏳ 发起登录请求 2026-01-23 16:58:29,810 - INFO - 🌐 访问雨云登录页 2026-01-23 16:58:31,258 - INFO - 页面标题：登录 | 雨云 2026-01-23 16:58:31,258 - INFO - ⏳ 等待登录表单元素加载... 2026-01-23 16:58:31,376 - INFO - 📝 输入账号密码 2026-01-23 16:58:31,775 - INFO - ⏳ 正在登录中，耗时较长请稍等…… 2026-01-23 16:58:54,899 - INFO - ✅ 未触发登录验证码 2026-01-23 16:58:59,906 - INFO - 当前页面: https://app.rainyun.com/dashboard 2026-01-23 16:58:59,910 - I…

Tiktok 用户主页 视频 和 评论 爬虫，基于Python selenium 库 和 playwright库两种方式。
type: item
date: 2026-01-20T16:52:37+08:00
description: 背景一开始是通过Api获取数据，但是最近他们增加X-Gnarly参数，而且在github上没有找有效的方案后，放弃api请求，改用页面爬取的方式。彻底避免参数加密校验。我的环境 python 3.11 selenium 4.39.0 playwright 1.57.0评论页面实现啦抓取第一页和第二页的评论，你们要是抓更多页可以吧第二页改成循环。执行脚本后会在当前目录生成一份json文件，里面是/api/comment/list/接口返回的数据。 python3.11 comment_scraper.py "@mahi.islam.oliva/video/7565942090039954706" 代码如下：import json import time import sys import base64 import re,os from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import argparse def merge_comments(first_page, second_page): """合并两页的评论数据""" merged_data = first_page.copy() if 'comments' in second_page: if 'comments' not in merged_data: merged_data['comments'] = [] merged_data['comments'].extend(second_page['comments']) return merged_data def extract_tiktok_filename(path: str) -> str: """ 从 TikTok 路径（如 '@username/video/123456'）中提取 'username_123456' 支持带或不带 @、带 URL 等情况 """ # 匹配模式：可选的 @ + 用户名（字母数字下划线.）+ /video/ + 数字ID match = re.search(r'@?([\w.]+)/video/(\d{16,})', path) if match: username = match.group(1) video_id = match.group(2) return f"{username}_{video_id}" else: # 如果格式不符，回退到清理后的通用方式 safe = re.sub(r'[\\/:*?"<>|\s]+', '_', path.strip('@/')) return safe[:100] class TiktokScraper: def __init__(self): self.comments_data = [] self.setup_driver() def setup_driver(self): chrome_options = Options() chrome_options.set_capability("goog:loggingPrefs", {"performance": "ALL"}) chrome_options.add_argument("--start-maximized") chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--headless=new") chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_argument("--disable-blink-features=AutomationControlled") chrome_options.add_argument("--disable-infobars") chrome_options.add_argument("--disable-extensions") chrome_options.add_argument("--disable-gpu") # 减少 WebGL 差异（可选） chrome_options.add_experime…

gemini3pro 生图无限用
type: item
date: 2026-01-14T18:06:04+08:00
description: Gemini Business 自动注册 & 2API 上传工具基于大佬们的开源成果，整合了定时注册、自动上传、过期剔除等功能。实现全自动化的账号池维护。核心逻辑优化自动维护：定时注册并直接传到 2API，自动剔除已过期账号，保留可用账号。失败重试：修改了注册机逻辑，设定申请 N 个，即使中间失败，也会一直重试直到成功申请到 N 个为止。丰俭由人：建议每 11 小时注册 2-3 个即可满足个人使用。避免对随机邮箱大佬提供不必要的压力。感谢各位大佬的无私奉献：2API：Gemini-Business2api注册机：Gemini Business 注册机邮箱服务：400 + 域名的临时邮箱环境准备请确保已安装 Python 环境，并安装以下依赖库：pip install undetected-chromedriver selenium beautifulsoup4 requests pystray pillow配置说明1. 先去 hf 部署一个 2api, 记住 API 地址和 admin_key。2. 新建并复制代码生成 py 文件，右键编辑，在顶部的配置区域填入你的 2API 信息： # 服务器 API 配置 API_HOST = "请输入你的服务器API地址" ADMIN_KEY = "请输入你的管理员密钥" # 无头模式开关 (True=后台运行无窗口, False=显示浏览器窗口) HEADLESS_MODE = True ##无头注册率会低点，但胜在静默，结合重试其实体验更好。 运行脚本在命令行中执行：py gemini_auto.py代码如下： gemini_auto.py """ Gemini Business 自动注册上传工具 """ # 标准库 import sys import json import time import random from pathlib import Path from datetime import datetime, timedelta, timezone from urllib.parse import urlparse, parse_qs from concurrent.futures import ThreadPoolExecutor # 第三方库 import requests from bs4 import BeautifulSoup import undetected_chromedriver as uc from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # ==================== 配置区域 ==================== # 服务器 API 配置 API_HOST = "请输入你的服务器API地址" ADMIN_KEY = "请输入你的管理员密钥" # 临时邮箱 API 配置 MAIL_API = "https://mail.chatgpt.org.uk" MAIL_KEY = "gpt-test" # Gemini 登录页面 LOGIN_URL = "https://auth.business.gemini.google/login?continueUrl=https:%2F%2Fbusiness.gemini.google%2F&wiffid=CAoSJDIwNTlhYzBjLTVlMmMtNGUxZS1hY2JkLThmOGY2ZDE0ODM1Mg" # 本地账号文件 ACCOUNTS_FILE = "accounts.json" # 页面元素定位 XPATH = { "email_input": "/html/body/c-wiz/div/div/div[1]/div/div/div/form/div[1]/div[1]/div/span[2]/input", "continue_btn": "/html/body/c-wiz/div/div/div[1]/div/div/div/form/div[2]/div/button", "verify_btn": "/html/body/c-wiz/div/div/div[1]/div/div/div/form/div[2]/div/div[1]/span/div[1]/button", } # 随机姓名池 NAME…

Gemini Business 注册机
type: item
date: 2026-01-12T10:33:07+08:00
description: 直接产出 Dreamy-rain/gemini-business2api 所需 json 注册效率～60s 一个日抛 直接每日重新注册即可刚刚那个版本有点问题 已修复已经生成的佬记得把 config_id 后缀的？csesidx=.* 清理掉重新导入import undetected_chromedriver as uc from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from bs4 import BeautifulSoup from urllib.parse import urlparse, parse_qs from datetime import datetime import time, random, json, os, requests # 配置 TOTAL_ACCOUNTS = 20 MAIL_API = "https://mail.chatgpt.org.uk" MAIL_KEY = "gpt-test" OUTPUT_DIR = "gemini_accounts" LOGIN_URL = "https://auth.business.gemini.google/login?continueUrl=https:%2F%2Fbusiness.gemini.google%2F&wiffid=CAoSJDIwNTlhYzBjLTVlMmMtNGUxZC1hY2JkLThmOGY2ZDE0ODM1Mg" # XPath XPATH = { "email_input": "/html/body/c-wiz/div/div/div[1]/div/div/div/form/div[1]/div[1]/div/span[2]/input", "continue_btn": "/html/body/c-wiz/div/div/div[1]/div/div/div/form/div[2]/div/button", "verify_btn": "/html/body/c-wiz/div/div/div[1]/div/div/div/form/div[2]/div/div[1]/span/div[1]/button", } NAMES = ["James Smith", "John Johnson", "Robert Williams", "Michael Brown", "William Jones", "David Garcia", "Mary Miller", "Patricia Davis", "Jennifer Rodriguez", "Linda Martinez"] def log(msg, level="INFO"): print(f"[{level}] {msg}") def create_email(): """创建临时邮箱""" try: r = requests.get(f"{MAIL_API}/api/generate-email", headers={"X-API-Key": MAIL_KEY}, timeout=30) if r.status_code == 200 and r.json().get('success'): email = r.json()['data']['email'] log(f"邮箱创建: {email}") return email except Exception as e: log(f"创建邮箱失败: {e}", "ERR") return None def get_code(email, timeout=30): """获取验证码""" log(f"等待验证码 (最多{timeout}s)...") start = time.time() while time.time() - start < timeout: try: r = requests.get(f"{MAIL_API}/api/emails", params={"email": email}, headers={"X-API-Key": MAIL_KEY}, timeout=30) if r.status_code == 200: emails = r.json().get('data', {}).get('emails', []) if emails: html = emails[0].get('html_content') or …

海克斯大乱斗数据抓取 (外服)
type: item
date: 2026-01-08T17:47:02+08:00
description: 1. 这是什么？这是一个带中英文的，使用拳头 API 和 blitz 网站数据的，抓取英雄联盟海克斯大乱斗所有英雄，出装，分级的脚本，和一些能减少选择困难的方法本来是之前朋友叫我玩海克斯大乱斗，我回归了一下，发现挺好玩但是搞不清符文，也不会出装备…然后就一直想着做一个工具推荐出装备和海克斯然后玩的太入迷了，现在已经不需要推荐了… 工具也不弄了这里把抓数据的方法分享给大家需要用的可以拿走，界面啥的就不发了，自用的太二了2. 能做什么？首先最简单的是直接参考这个 ARAM Mayhem Tier List 网站就 OK 了千万不要下载任何 APP, 功能都很美好，但是都不支持国服，我试过了自己弄个小程序或者网页，或者啥的，适合回归玩海克斯，但还没多少时间玩和研究的可以用 python 批量处理为 json, 一键导入英雄联盟 (国服) 客户端内，这样游戏里就直接有推荐了继续调试，摸鱼…3. 文件说明 (文件打包放最后了):blitz_aram_scraper.py首选调用 Riot 的 API, 获取获取英雄的中英文名字 (主要为了解决 blitz 有时候强制中文失效)访问 ARAM Mayhem Tier List , 在这里抓所有英雄的列表，名字，头像图片，详情链接访问每个英雄具体的详情链接，获取该英雄的全部海克斯符文分级，装备流派分级等等数据因为需要点击加载全部，和切换流派，所以使用 selenium合并为 aram_data.csv, 这里其实应该设计多表结构的，但是为了省事，就大杂烩了其中会多线程抓取所有数据，然后图片会保存本地 (下载一次)aram_data.csv -- 抓取后的所有数据技术文档_ARAM 数据结构与逻辑说明.md–AI 生成的数据 (aram_data) 使用说明downloaded_images 文件夹放所有下载的英雄头像、装备图标、符文图片对照表获取.py拳头 API 取英雄数据的，中英文英雄名字功能融合到 blitz_aram_scraper.py 了单独运行会获取所有中英文物品英雄天赋数据对照表 (没有海克斯)4. 文件打包归档.zip5. 问题？？这个网站查隐藏分到底真的假的？非广告网站地址，非广告！！6. 海克斯大乱斗通用出装 JSON (来自抖音，非推广，来自抖音一个作者，大家也可以自己制作)文件来源！！！抖音作者：1- 长按复制此条消息，打开抖音搜索，查看 TA 的更多作品。 https://v.douyin.com/gjLVmID0kmc/ 4@3.com :8pm抖音号：69672512878通用出装 json.zip使用说明:藏品 — 装备 — 导入7.Tip:为什么选择 blitz?因为他竟然有中英文，之前翻了一大圈网站，根本找不到全面的英雄联盟装备，符文，英雄的中英文对照 (拳头的 API 没有海克斯的中英文，也可能是我没找到？)为什么没有国服的数据？因为我们有掌盟我看有一些小程序有国服数据，但是不知道真假，有了解的佬可以告知一下📌 转载信息来源： https://linux.do/t/topic/1420023转载时间： 2026/1/8 17:47:01

分享一个企业备案查询的脚本-2
type: item
date: 2022-08-04T14:27:51+08:00
description: 声明：本资料仅供学习交流，严禁使用于商业、非法用途！！！之前不是发了一个备案查询的脚本嘛，详情可见[bspost cid="3384"]有师傅反应说接口数据不太对，因为那个接口用的都是缓存库，确实太老了，新的得vip（手动狗头）根据我的需求确实能满足，以下改的就纯单学习交流了，获取的还是比之前要全很多另外师傅们注意，还是根据需求来写的，所以仅限根据企业名称获取备案功能！！！还有，没去细扣js了，直接用的selenium，师傅们如果使用可能还得去装个驱动，这个直接上网搜就行，毕竟在工作（摸鱼）时间写的，发现还挺好用的，对token验证还是乱杀，也学习了一波直接上代码吧import re import time import random import csv from urllib import parse from urllib.parse import quote from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from pathlib import Path import warnings #忽略warning warnings.filterwarnings("ignore") # 定义备案爬虫类 class BeianSpider(object): # 获取url def __init__(self): #判断beian.csv是否存在，不存在则创建 my_file = Path("beian.csv") if my_file.exists(): print("[+]beian.csv已存在！") else: with open('beian.csv','a',newline='',encoding="utf-8") as f: #生成csv操作对象 writer = csv.writer(f) header = ["主办单位名称","单位性质","网站备案/许可证号","网站名称","网站首页网址","审核时间","记录时间","备案域名"] writer.writerow(header) print("[+]beian.csv已创建！") def get_url(self,word): url = 'https://icp.chinaz.com/record/{}' name=quote(word, 'utf-8') #params = parse.urlencode(name) url = url.format(name) #print(url) return url # 正则行数，提取内容 def parse_html(self,name,html): # 正则表达式 re_bds = ' (.*?) (.*?) (.*?) (.*?) <a href="//(.*?)".*? (.*?) (.*?) <a href="/record/(.*?)".*?' # 生成正则表达式对象 pattern = re.compile(re_bds,re.S) r_list = pattern.findall(html) print(r_list) self.save_html(r_list) with open('success.txt','a+',newline='',encoding="utf-8") as f: f.write(name) f.write('\n') # 保存数据函数，使用python内置csv模块 def save_html(self,r_list): #生成文件对象 with open('beian.csv','a',newline='',encoding="utf-8") as f: #生成csv操作对象 writer = csv.writer(f) #整理数据 lenth = len(r_list) #print(lenth) for i in range(lenth): #主办单位名称 save_organizer_name = r_list[i][0] #print(name) #单位性质 save_unit_nature = r_list[i][1] #网站备案/许可证号 save_ICP_number = r_list[i][2] #网站名称 save…