自动注册chatGPT
注册流程

关键技术
模拟点击
介绍一下Selenium
Selenium是一个自动化测试工具,它可以模拟用户在浏览器中的行为,例如点击、输入、滚动等操作。Selenium支持多种编程语言,包括Java、Python、C#等,可以在不同的操作系统和浏览器上运行。
Selenium主要有三个组件:Selenium IDE、Selenium WebDriver和Selenium Grid。Selenium IDE是一个浏览器插件,可以录制和回放用户的操作,适合初学者使用。Selenium WebDriver是一个API,可以通过编程语言来控制浏览器,实现更加灵活的自动化测试。Selenium Grid是一个分布式测试工具,可以在多个机器上同时运行测试用例,提高测试效率。
Selenium的优点包括:可以模拟真实用户的操作,可以在多种浏览器和操作系统上运行,可以通过编程语言来控制浏览器,可以自动化测试大量的测试用例,可以提高测试效率和准确性。
Selenium的缺点包括:需要一定的编程技能,需要安装和配置浏览器驱动程序,需要维护测试脚本的稳定性和可维护性。
写一下python的示例代码
以下是一个简单的Python示例代码,用于使用Selenium WebDriver控制Chrome浏览器打开百度首页并搜索关键字:
from selenium import webdriver
# 创建Chrome浏览器实例
driver = webdriver.Chrome()
# 打开百度首页
driver.get("https://www.baidu.com")
# 在搜索框中输入关键字
search_box = driver.find_element_by_name("wd")
search_box.send_keys("Selenium")
# 点击搜索按钮
search_button = driver.find_element_by_id("su")
search_button.click()
# 等待搜索结果加载完成
driver.implicitly_wait(10)
# 获取搜索结果页面标题
title = driver.title
print("搜索结果页面标题:", title)
# 关闭浏览器
driver.quit()
以上代码使用了Selenium WebDriver的Python API,通过创建Chrome浏览器实例、定位页面元素、模拟用户操作等方式,实现了自动化搜索百度的功能。
邮箱操作
搭建一个邮箱服务
如何搭建一个邮箱服务
搭建一个邮箱服务需要一定的技术和资源,以下是一些基本的步骤:
-
选择邮件服务器软件:常见的邮件服务器软件有Postfix、Exim、Sendmail等,可以根据自己的需求和技术水平选择合适的软件。
-
配置邮件服务器:根据邮件服务器软件的文档和指南,进行基本的配置,包括域名、邮件账户、SMTP和POP3等协议的配置等。
-
配置DNS记录:为了让其他邮件服务器能够找到你的邮件服务器,需要在DNS中添加MX记录,指向你的邮件服务器的IP地址。
-
配置SSL证书:为了保证邮件传输的安全性,需要为邮件服务器配置SSL证书,可以使用免费的Let’s Encrypt证书或者购买商业证书。
-
配置反垃圾邮件和反病毒功能:为了防止垃圾邮件和病毒的传播,需要为邮件服务器配置反垃圾邮件和反病毒功能,可以使用开源软件如SpamAssassin和ClamAV等。
-
测试邮件服务:在配置完成后,需要进行测试,发送和接收邮件,确保邮件服务器正常工作。
以上是搭建一个基本的邮件服务器的步骤,需要注意的是,邮件服务器的安全性和稳定性非常重要,需要进行定期的维护和更新。
如何用 Postfix 搭建邮箱
Postfix是一款流行的邮件服务器软件,可以用于搭建邮件服务。以下是使用Postfix搭建邮箱的基本步骤:
-
安装Postfix:在Linux系统中,可以使用包管理器安装Postfix,例如在Ubuntu系统中,可以使用以下命令安装:
sudo apt-get update sudo apt-get install postfix -
配置Postfix:Postfix的配置文件位于/etc/postfix/main.cf,可以使用文本编辑器打开进行配置。以下是一些常见的配置项:
- myhostname:设置邮件服务器的主机名。
- mydomain:设置邮件服务器的域名。
- mydestination:设置邮件服务器接受邮件的目标域名。
- inet_interfaces:设置邮件服务器监听的网络接口。
- smtpd_banner:设置SMTP服务的欢迎信息。
配置完成后,需要重启Postfix服务使配置生效:
sudo systemctl restart postfix -
添加邮件账户:可以使用Linux系统自带的useradd命令添加邮件账户,例如:
sudo useradd -m john这将创建一个名为john的用户,并在/home目录下创建一个与用户名相同的目录。
-
配置邮件客户端:可以使用常见的邮件客户端如Outlook、Thunderbird等,或者使用命令行工具如mutt、mail等,配置邮件客户端连接到Postfix服务器。
以上是使用Postfix搭建邮箱的基本步骤,需要注意的是,Postfix的配置非常灵活,可以根据自己的需求进行定制化配置。同时,为了保证邮件传输的安全性,需要为Postfix配置SSL证书。
TIPS:
- openai邮件也被墙了。所以邮箱服务器需要是国外的。
- 为了得到海量邮箱,需要配置通配符。让所有邮箱的邮件转到同一个用户下。
核心配置如下:
邮箱配置
/etc/postfix/main.cf
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.zhonghuipro.com
# iZrj93ic8g4x67yv30hte6Z
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = xxx1.com, xxx2.com, xxx3.com
relayhost =
mynetworks = 0.0.0.0/0
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
virtual_alias_maps = hash:/etc/postfix/virtual
邮箱映射
/etc/postfix/virtual
@xxx1.com root@xxx1.com
@xxx2.com root@xxx1.com
@xxx3.com root@xxx1.com
把xxx1.com,xxx2.com,xxx3.com这三个域名的所有邮件都转给root@xxx1.com
如果域名较多,可以用python脚本批量生成。
for i in range(500):
print(f"@xxx{i}.com root@xxx1.com")
更新映射,重启服务
postmap /etc/postfix/virtual
systemctl restart postfix
收取邮件
服务本地收取的话用mutt就能查看。但没法程序获取。 一个思路是通过pop3远程收取? 但我没搞定。可能是端口网络问题,没成功。 换了一个思路。 在邮箱服务器,用python的mailbox库读取本地邮件文件,对外提供邮件查询接口。
获取邮件内容的核心代码
def get_mails(
min_ts=None,
mbox_file=None,
extract_pattern=None,
mail_from_pattern=None,
mail_subject_pattern=None
):
mbox_file = mbox_file or '/var/mail/root'
extract_pattern = extract_pattern or 'https?://\S+email-verification\S+'
mail_from_pattern = mail_from_pattern or 'openai\.com'
mail_subject_pattern = mail_subject_pattern or 'OpenAI'
mbox = mailbox.mbox(mbox_file)
results = []
for key in mbox.iterkeys():
msg = mbox.get_message(key)
mail_from = decode_str(msg['From'])
subject = decode_str(msg['Subject'])
mail_to = decode_str(msg['To'])
if mail_from and isinstance(mail_from, str) \
and re.search(mail_from_pattern, mail_from)\
and re.search(mail_subject_pattern, subject):
time_str = msg.get_from().split(" ", 1)[1].strip()
time_obj = datetime.datetime.strptime(time_str, '%a %b %d %H:%M:%S %Y')
ts = int(time_obj.timestamp())
if min_ts and ts < min_ts:
continue
url_pattern = re.compile(extract_pattern)
for part in msg.walk():
content = get_mail_content(part)
urls = url_pattern.findall(content)
results += [{
'mail_from': mail_from,
'mail_to': mail_to,
'subject': subject,
'ts': ts,
'url': v
} for v in urls]
logger.info(results)
return results
短信操作
使用第三方服务 https://sms-activate.org/
接口文档 https://sms-activate.org/api2
关键三个接口:
- 查询余额 getBalance,余额不足时需要及时充值提醒。
- 生成号码 getNumberV2,得到手机号和注册ID
- 获得派活码 getActiveActivations,得到验证码。
防止验证码
普通自动化测试会被识别要求填写验证码。 为了防止识别出是机器人。 需要做2点
- 把Selenium替换成undetected_chromedriver,做了去隙。
- 使用动态IP,每个ip低频注册。