欢迎光临散文网 会员登陆 & 注册

使用selenium实现FC2登录的自动化

2023-08-22 12:11 作者:くるんま・みや  | 我要投稿

部分FC2的免费直播要求用户登录后才能观看,因而FC2直播录制的自动化需要实现FC2登录的自动化,获取间隔设置为1天即可。FC2的登录界面存在hCaptcha验证,但部分界面不需要交互,可以直接输入密码进行登录,这里提供简单的Python selenium代码提供参考。

selenium获取登录cookies

为了方便,我选用的是seleniumwire.webdriver而非原版selenium的webdriver。seleniumwire相当于自带浏览器抓包,方便从response headers获取登录cookies。

这里driver.scopes可以指定seleniumwire.webdriver抓包的范围,提高脚本效率。

接下来是进行登录请求,注意部分的登录URL(如中文语言的)会要求手动验证,应当避免使用那些URL。

下一步就是获取cookies了,但在这之前FC2可能会要求输入邮箱验证码。即便没有在设置中开启2FA,也有一定的几率触发,因此需要检测跳转后的URL进行处理。

邮箱验证码的获取可以通过Python的imaplib实现,相应实现可参照结尾部分。

最后一步就是从请求中获取cookies。

最后不要忘了用driver.quit()退出webdriver进程。

获取邮件验证码

获取验证码用的邮箱只要支持IMAP即可。如果从隔离安全的角度考虑,也可以为注册邮箱添加一个转发规则,将FC2验证码转发至单独搭建的邮箱服务器(需要域名)。

这里以Docker-Mailserver为例,假设用于搭建的邮箱服务器的主机的域名为vps.example.org,而邮箱的域名是example.org。主机已用certbot获取了vps.example.org的证书,并保存到了默认的/etc/letsencrypt下。

首先根据教程下载docker compose所需的compose.yaml和mailserver.env,并创建用于存储的文件夹。接下来需要更改compose.yaml的少量配置:修改hostname为自己的域名,并添加letsencrypt的相关参数。

接下来需要为example.org添加MX记录,内容为vps.example.org,权重任意。MX记录指明发往xxx@example.org的邮件由vps.example.org的主机处理。rDNS不影响邮件接收,可跳过。

用docker compose up启动容器后,即可通过命令行工具创建/更新账号了

完成以后就可以用imaplib连接邮件服务器了。邮件可能是经过编码的而非纯文本,所以最好使用email库进行解析。可以根据实际情况再添加标题等过滤条件。

这里将发送登录请求时记录的时间戳作为参数,避免误用旧的验证码。


使用selenium实现FC2登录的自动化的评论 (共 条)

分享到微博请遵守国家法律