B站抢楼是一个很好玩的事情,每当新番出新集时。总有很多人想能够在前排发表评论,但是因为人数众多,往往不能如愿,今天就教大家一个抢楼的好办法。

我们平时抢楼的整个流程是这样的:

1.在官方放出的新番更新时间时等待

2.到时间后一直不停的刷新网页,等待新集数网页链接出现,出现后点击进入

3.等待网页载入完成,然后写入并发表评论。

但是这么做,基本是不可能抢到一楼的。

在看之前最好先了解下http协议基础内容,知道post和get就行了:这里有一篇文章很不错:HTTP 协议详解

简单测试就可以得出我们就可以知道b站发表评论的方式是向服务器post数据,使用http fox监视数据后,post的数据是这样的:

其中的message就是我们要发的内容,oid则是目标番剧的代码,b站的每个番剧都会有一个类似的编号。

那么我们要做的就是获得目标剧的编号,然后在第一时间post数据,这样我们省去了加载网页的过程直接完成抢楼。

因为发表弹幕需要登录,所以这里还使用了selenium模拟登录并获得网页cookies,关于cookies,有兴趣也可以了解下:cookie协议详解

具体代码如下:

from selenium import webdriver
import requests
from re import findall
from bs4 import BeautifulSoup
import time def get_cookies():
driver = webdriver.Opera()
url = 'https://passport.bilibili.com/login'
driver.get(url)
driver.find_element_by_xpath('//*[@id="userIdTxt"]').send_keys(input('请输入用户名'))
driver.find_element_by_xpath('//*[@id="passwdTxt"]').send_keys(input('请输入密码'))
driver.find_element_by_xpath('//*[@id="vdCodeTxt"]').click()
driver.find_element_by_xpath('//*[@id="vdCodeTxt"]').send_keys(input('请输入验证码(不分大小写)'))
driver.find_element_by_css_selector(
'body > div.head_foot_content > div > div.content-bd > div.content-r > form > input.login').click()
if driver.current_url != url:
print('登录成功')
qianglou(driver.get_cookies())
else:
print('登陆失败,请重试')
get_cookies() def qianglou(cookie):
cookies = {
'DedeUserID': cookie[].get('value'),
'DedeUserID__ckMd5': cookie[].get('value'),
'SESSDATA': cookie[].get('value'),
# 'DedeUserID': ,
# 'DedeUserID__ckMd5': 'fff63aa9b5e53ec3',
# 'SESSDATA': '92847f1e%2C1476104322%2Cb700756a',
}
anime_num = input('请输入要抢楼的番剧编号\n->')
message = input('请输入要发送的信息\n->')
url = 'http://bangumi.bilibili.com/anime/v/' + str(anime_num)
i =
get_av_num(url, message, cookies, i) def get_av_num(url, message, cookies, i):
print('try', i)
content = BeautifulSoup(requests.get(url).content.decode('utf8', 'ignore'), 'lxml')
av_infos = content.find('a', class_='v-av-link')
if av_infos is None:
i +=
get_av_num(url, message, cookies, i)
av_infos = av_infos.text + '/'
av_num = findall('AV(.*?)/', av_infos)[]
av_num = int(av_num)
data = {
'message': message,
'type': ,
'oid': av_num
}
send_message(cookies, data) def send_message(cookies, data):
url = 'http://api.bilibili.com/x/v2/reply/add'
content = requests.post(url, data=data, cookies=cookies).content.decode('utf8', 'ignore')
result = findall('"message":"(.*?)"', content)
if result[] == 'ok':
print('发送完成')
else:
send_message(cookies, data) if __name__ == '__main__':
get_cookies()
# qianglou()

我只实现了最基础的发表弹幕功能,缺点是你必须提供要抢楼的番剧号,有兴趣的可以继续完成,我提供下思路:通过BeautifulSoup,检测番剧主页面,是否更新,然后在更新时提取出番剧编号,自动发弹幕。

祝抢楼愉快~~~

BliBli抢楼全攻略的更多相关文章

  1. 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法

    若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...

  2. 生成 PDF 全攻略【2】在已有PDF上添加内容

    项目在变,需求在变,不变的永远是敲击键盘的程序员..... PDF 生成后,有时候需要在PDF上面添加一些其他的内容,比如文字,图片.... 经历几次失败的尝试,终于获取到了正确的代码书写方式. 在此 ...

  3. 从小工到专家 ——读《Java程序员职场全攻略》有感

    从小工到专家 ——读<Java程序员职场全攻略>有感   <Java程序员职场全攻略>是以故事的形式,向读者介绍Java程序员的职场经验.作者牛开复在北京从事软件开发,已经是一 ...

  4. Android屏幕适配全攻略 (转载)

    http://blog.csdn.net/jdsjlzx/article/details/45891551 https://github.com/hongyangAndroid/AndroidAuto ...

  5. Moon.Orm3.8技术全攻略

    Moon.ORM技术全攻略  一.绪论 本文主要是针对Moon.ORM的技术的讨论及其使用使用指导.如有其它疑问,请留言.本文主要针对Moon.ORM3.9版本,同时将会对4.0做一个技术预览.本文从 ...

  6. TestLink安装全攻略

    TestLink安装全攻略 此文章转自该链接--http://www.cnblogs.com/Tcorner/archive/2011/07/26/2117296.html 安装前准备 需要下载xam ...

  7. 取代奶瓶Minidwep-gtk破解WPA 全攻略

    取代奶瓶Minidwep-gtk 破 WPA 全攻略  目录 1. CDlinux 下使用 minidwepgtk 获取握手包并使用自带的字典破解 2. 自带的字典破解不出密码时使用 U 盘外挂字典继 ...

  8. 用C#制作PDF文件全攻略

    用C#制作PDF文件全攻略 目  录 前    言... 3 第一部分 iText的简单应用... 4 第一章 创建一个Document 4 第一步 创建一个Document实例:... 5 第二步 ...

  9. 【转】轻松搞定FTP之FlashFxp全攻略

    转载网址:http://www.newhua.com/2008/0603/39163.shtml 轻松搞定FTP之FlashFxp全攻略 导读: FlashFXP是一款功能强大的FXP/FTP软件,融 ...

随机推荐

  1. BASE64,MD5,SHA,HMAC加密與解密算法(java)

    package com.ice.webos.util.security; import java.io.UnsupportedEncodingException; import java.math.B ...

  2. TreeList的使用

    添加列 TreeListColumn column = treeList1.Columns.Add(); column.Caption = @"建筑列表"; column.Visi ...

  3. V-rep学习笔记:机器人逆运动学数值解法(The Pseudo Inverse Method)

    There are two ways of using the Jacobian matrix to solve kinematics. One is to use the transpose of ...

  4. [SAP ABAP开发技术总结]几个小问题

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  5. 02~ 一步一步教你使用 SVN之SVN 的介绍

    SVN的介绍 一.学习SVN的主要内容的介绍 1.基本操作:学习SVN有哪些基本操作 2.服务器端的安装配置:SVN中必不可少的2个环境之一,会在下面的课程中介绍服务器如何去安装和配置 3.客户端软件 ...

  6. iOS - Xib

    前言 xib 文件可以被 Xcode 编译成 nib 文件,xib 文件本质上是一个 xml 文件,而 nib 文件就是编译后的二进制文件,该文件将视图等控件对象封装了起来,而在程序运行起来后,这些对 ...

  7. effect c++ 口诀。

    常用条款,写成口诀,记住.知其所以,也要时时使用. 1)习惯c++: 联替const初. 2)构造,复制,析构: 要知默,构赋析. 若不需,明拒绝. 构析不调虚. 异不逃析构. 基析要虚函. 赋值操, ...

  8. ubuntu_常用命令_01

    1. 获取超级用户权限(需要输入超级用户的密码) sudo -i 2. 文本编辑器(暂时觉得 类似Windows里面的txt,更多功能有待发现) gedit /xxx/yyy ZC: 貌似 这个命令 ...

  9. poj1673EXOCENTER OF A TRIANGLE

    链接 据说这题是垂心..数学太弱没有看出来,写了分朴实无华的代码.. 旋转三边得到图中的外顶点,然后连接三角形顶点求交点,交上WA..觉得没什么错误就去看了下discuss,发现都在说精度问题,果断开 ...

  10. (转)使用Jmeter进行http接口测试

    前言: 本文主要针对http接口进行测试,使用Jmeter工具实现. Jmter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较成熟,因此,本次直接使用Jmeter工具来完成对 ...