【Python】使用selenium对Poe批量模拟注册脚本

2024-03-20 02:52

本文主要是介绍【Python】使用selenium对Poe批量模拟注册脚本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

配置好接码api即可实现自动化注册登录试用一体。

运行后会注册账号并绑定邮箱与手机号进行登录试用。

在这里插入图片描述

测试结果30秒一个号

在这里插入图片描述
在这里插入图片描述

import re
import time
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
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
import logging# 配置日志记录
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)# 获取手机验证码
def get_phone_verification_code(url):while True:try:response = requests.get(url)html_content = response.text# 使用正则表达式匹配验证码match = re.search(r'Your Poe verification code is: (\d+)\.', html_content)if match:code = match.group(1)logging.info("提取到的手机验证码: %s", code)return code  # 找到验证码则退出循环并返回验证码logging.info("未找到手机验证码,继续请求...")time.sleep(1)  # 等待 1 秒后再次请求except Exception as e:logging.error("请求手机验证码出错: %s", e)time.sleep(1)  # 出错时等待一段时间后再次请求# 获取邮箱验证码
def get_email_verification_code(url):while True:response = requests.get(url)html_content = response.text# 使用正则表达式匹配 6 位数字match = re.search(r'\b\d{6}\b', html_content)if match:code = match.group()logging.info("提取到的邮箱验证码: %s", code)return code  # 找到验证码则退出循环并返回验证码# 如果页面中没有 6 位数字验证码,使用 BeautifulSoup 进行解析soup = BeautifulSoup(html_content, 'html.parser')pre_element = soup.find('pre')if pre_element:code = pre_element.text.strip()logging.info("提取到的邮箱验证码: %s", code)return code  # 找到验证码则退出循环并返回验证码logging.info("未找到邮箱验证码,继续请求...")time.sleep(1)  # 等待 1 秒后再次请求# 登录循环
def login_loop(driver, wait_time):try:driver.delete_all_cookies()driver.get("https://poe.com/login")# 使用显式等待来等待按钮可见并且可点击use_phone_button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), '使用电话')]")))use_phone_button.click()logging.info("点击了 '使用电话' 按钮")# 获取电话号码with open("phone.txt", "r") as file:lines = file.readlines()first_line = lines[0].strip()phone, phone_url = first_line.split("----")logging.info("获取到的电话号码: %s", phone)with open("phone.txt", "w") as file:file.writelines(lines[1:])# 输入电话号码并点击下一步按钮phone_input = WebDriverWait(driver, wait_time).until(EC.presence_of_element_located((By.CSS_SELECTOR, "input.PhoneNumberInput_phoneNumberInput__lTKZv")))phone_input.send_keys(phone)phone_input.send_keys(Keys.RETURN)logging.info("输入电话号码并点击下一步按钮")# 输入电话号码验证码code_input = WebDriverWait(driver, wait_time).until(EC.presence_of_element_located((By.CSS_SELECTOR, "input.VerificationCodeInput_verificationCodeInput__RgX85")))time.sleep(5)verification_code = get_phone_verification_code(phone_url)code_input.send_keys(verification_code)code_input.send_keys(Keys.RETURN)logging.info("输入电话号码验证码")# 获取邮箱with open("emai.txt", "r") as file:lines = file.readlines()first_line = lines[0].strip()email, email_url = first_line.split("----")logging.info("获取到的邮箱: %s", email)with open("emai.txt", "w") as file:file.writelines(lines[1:])# 输入邮件email_input = WebDriverWait(driver, wait_time).until(EC.presence_of_element_located((By.CSS_SELECTOR, "input.EmailInput_emailInput__OfOQ_")))email_input.send_keys(email)email_input.send_keys(Keys.RETURN)# 输入邮件验证码verification_code_input = WebDriverWait(driver, wait_time).until(EC.presence_of_element_located((By.CSS_SELECTOR, "input.VerificationCodeInput_verificationCodeInput__RgX85")))time.sleep(5)logging.info("获取邮箱验证码")verification_code = get_email_verification_code(email_url)logging.info("提交邮箱验证码")verification_code_input.send_keys(verification_code)verification_code_input.send_keys(Keys.RETURN)finally:# 关闭浏览器driver.quit()def main():# 设置等待时间wait_time = 30  # 以秒为单位while True:try:# 创建一个Chrome浏览器实例,启动无痕模式chrome_options = Options()chrome_options.add_argument('user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36')chrome_options.add_argument('--lang=zh-CN')chrome_options.add_argument("--disable-blink-features=AutomationControlled")chrome_options.add_argument('--incognito')  # 启动无痕模式driver = webdriver.Chrome(options=chrome_options)login_loop(driver, wait_time)finally:# 关闭浏览器driver.quit()if __name__ == '__main__':main()

这篇关于【Python】使用selenium对Poe批量模拟注册脚本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/828067

相关文章

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程