斗鱼自动发送弹幕

实验环境

Windows 10 x64

编辑器

Sublime Text3

用到的第三方模块

selenium, PIL, time, random, os

逻辑过程分析:

一、网页模拟登陆。

这一步有两种方法:

A、使用账号密码,然后极客验证码。抓包发现,网站使用极验验证码,并且是专门为斗鱼设计的,网上查了下资料,能否破解,主要思路是下载验证背景图(合成)和缺口图片(合成),再模拟鼠标滑动,测试下可以使用,但是斗鱼这一套,抓包并没有一张张的碎片,类似于是一串串数字,当用户进行验证时,会事先根据图片缺口来生成一串数字,然后用户进行验证,验证过程会将数字传给极验的服务器进行验证,加大了难度,当然如果花一些时间肯定可以破解的。

并且当第一次验证登陆失败,后面几次还可能出现其他的文字验证码,不划算,费心费力。

所以二维码登陆的思路是请求到一串code,再生成,再用app进行扫码(其实这里可以抓一下手机app扫码时怎么向服务器传的这串代码,可以模拟发送,就不用扫码了),然后服务器会对传入的code进行响应,给网页端授权,就可以登陆了,理论上是这个思路。

问题来了,我模拟请求时,请求头都是按照抓包来的,但依旧得不到那一串code,显示系统错误。

所以就只好用最简单粗暴的方法了,selenium来自动请求模拟登陆。

首先把二维码那一块区域自动截图下来,然后进行扫码登陆,美滋滋(注意二维码60s过期)

2、验证登陆成功

登陆前与登陆后网页的最大区别就是有了用户名,可以这一点来进行验证

3、输入房间号,进入房间

这一步直接用get请求即可,网页后面一串数字即为房间号

4、发送弹幕

首先要找到需要输入的文本框,然后点击发送即可,并且需要不断重复这个过程,所以要设置语言库以及发送间隔时间。

二、代码逻辑:

1、模拟登陆

2、验证登陆

找到用户的class即可

3、发送弹幕

4、实验效果

总结:缺点还是很多的,比如验证码过期问题需要重新获取二维码扫码,定位文本狂时,有一定几率出现错误。但通过这次的练习,知道了一些验证码的处理方式,更加熟悉了selenium这一模块。

后续改进:可以做成客户端方式,自定义弹幕,自定义延迟,优化定位等。有一句话说得好,能够用浏览器浏览到的任何东西,都可以用Python爬虫给爬下来。

欢迎留言交流你的看法!

往期实战

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180325G0QXCL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券