为什么我在bilibili番剧评分在哪上看番剧时,有些番剧键盘不能快退。

1597人阅读
用c++写bilibili番剧抢楼程序
转自,原作者:
说明:转载该文章只为学习而用,如果侵权请留言,我会尽快删除
作为一个已经退役的抢楼玩家,我不想对三好和手速王评论什么。他们用脚本抢楼,那是他们自己的事。不过我在此实名反对所有“脚本抢楼不公平”的回答。没什么不公平的,他们能写脚本,没说你不能用脚本,完全公平,前提是你要会写。然而你自己不会,别人会,别人抢到楼,然后你说这不公平,这不是跟“我高中没别人努力高考成绩没别人好我去的大学没他好,这不公平”是一个概念么。。。
当然我不是鼓励抢楼,我也玩过这个,只不过真没什么意思,蛮浪费时间的,就不玩了,现在已经退役。。。
那个以前活跃过的retrospect2019就是我
但是我还是抢不过他们两个,因为家里网实在渣。有人说过,现在的黑客已经没有过去的那种分享精神了
好,那我今天就分享一回虽然我并算不上一个黑客,只是一个菜鸟。
接下来的篇章里,我会试着把这种抢楼机器人的实现原理尽可能地阐述清楚。不知道市民和手速王是不是用的这种方法,不过应该大致原理也差不多。
本篇科普会分为两个部分,第一个部分阐述大致原理,不会编程的也能大概明白;第二个部分上实际代码,需要大致的c/c++基础,TCP/IP协议,http协议,以及操作系统编程知识(如多线程互斥)才能明白。
注:C/C++并不是脚本,个人原因不喜欢用脚本,顺便也告诉大家不要把脚本和机器人挂上等号
PS:本人是菜鸟,编程习惯有些地方可能不规范,大神请轻喷,指出交流即可。
首先在实现这个机器人之前,我们要先想一个问题,我们要让它干什么?或者说,我们抢楼的时候,我们干的本质上是什么?
我们抢楼时,做的无非是以下:
1.不断地刷新“番剧”页面,看最新一集更新没有
2.如果更新,对这一集进行评论
用算法流程图表示,就是这样:
好了,大致就是这样。接下来就要上代码了,对编程没有了解的可以大概地浏览一下看我装个13,或者觉得我sb的可以直接alt+F4。。。
首先,我们要对“发送评论”这个动作进行实现,了解HTTP的都知道,评论的发送,实际上就是一个POST请求。我们这边直接抓一下b站的包:
嗯,b站就是这么耿直,赤裸裸地明文发送数据。那么接下来就很简单了,C/C++的话,socket,connect,send,搞定!
下面直接上代码:
&span style=&font-size:14&&&em&作者:2019
链接:https://www.zhihu.com/question//answer/
来源:知乎&/em&
#define BILIBILI_IP &114.80.223.172&
class CommentSender//顾名思义,用于发送评论的类
CommentSender();
~CommentSender();
int SetInfo(char * szMsg, char * szCookie, char * szAv);//设置数据包的评论内容,cookie(用于告诉服务器,这是哪个用户发的评论),和视频AV号。。。
char * szH//堆,用于存储将要发送的POST数据包
static char szFormatHeader[];//数据包头模板,到时候就用它来sprintf...
//它的定义往下翻就好。。。
//SetInfo函数。。。
CommentSender::CommentSender()
szHeader = new char[2048];
memset(szHeader, 0, 2048);
CommentSender::~CommentSender()
delete[] szH
int CommentSender::SetInfo(char * szMsg, char * szCookie, char * szAv)
//功能:根据已知msg cookie av号,sprintf动态生成请求头
char * szMsgEnc = new char[4096];
CnvrtToUrlEnc(szMsg, szMsgEnc);//自己写的函数,用于把字符串进行URL编码,网上大把,就不讲了。。。
int iRet = sprintf_s(szHeader, 2048, szFormatHeader, 39 + strlen(szAv) + strlen(szMsgEnc), szAv, szCookie, szMsgEnc, szAv);//生成POST请求数据包的字符串
delete[] szMsgE
__declspec(selectany) char CommentSender::szFormatHeader[]=&POST /x/reply/add HTTP/1.1\r\n&
&Host: api.bilibili.com\r\n&
&Connection: close\r\n&
&Content-Length: %d\r\n&
&Accept: application/json, text/javascript, */*; q=0.01\r\n&
&Origin: http://www.bilibili.com\r\n&
&User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0. Safari/537.36 SE 2.X MetaSr 1.0\r\n&
&Content-Type: application/x-www-form- charset=UTF-8\r\n&
&Referer: http://www.bilibili.com/video/av%s/\r\n&
&Accept-Language: zh-CN,q=0.8\r\n&
&Cookie: %s\r\n\r\n&
&jsonp=jsonp&message=%s&type=1&plat=1&oid=%s&;
//用了蛮多格式化符号用来sprintf
int SendComment(char * szMsg, char * szCookie, char * szAv)
CommentSender * cs = new CommentS
cs-&SetInfo(szMsg, szCookie, szAv);//根据参数生成POST请求数据包
char * szRecvBuf = new char[1024]; memset(szRecvBuf, 0, 1024);
EncapBy2019::TCP tcp(BILIBILI_IP ,80,0);//IP,端口,最后一个参数请无视
//然后这个类是我自己封装的一个TCP类,把socket封装进去了,原理是一样的,这里就不说了,TCP范例网上大把。。。
if (tcp.Connect() == 0)//connect方法中,我封装了socket()和connect()。。。
delete[] szRecvB
tcp.send(cs-&szHeader, strlen(cs-&szHeader));//这步就是关键了,发送
memset(szRecvBuf, 0, 1024);
int iRet = tcp.recv(szRecvBuf, 1024,5);//接收返回报文
tcp.DisConnect();
delete[] szRecvB
return iR//返回接收到的长度
//当然还要判断发回来的JSON,比方说有没有验证码,发送是否成功,这里为了简化,就不判断了
最后这一切都被封装到sendcomment这个函数里面了,我只要调用就发送OK了。接下来,我们就要对“刷新番剧页面”进行代码实现了。
这个“刷新番剧页面”,本质上就是一个GET的请求,然后收到这个GET请求的返回数据包之后,对其进行分析,如果最新一集的AV号改变了,那么就对这个AV好进行sendcomment函数的调用,即发送评论。
我们来直接看代码:
#define PAGECOMPRSIZE (1024*16)
#define PAGESIZE ()
#define BILIBILI_IP &114.80.223.172&
class AnimeFromList//这个类就是用来刷新番剧页面的。。。
AnimeFromList();
~AnimeFromList();
bool LoadPage(char * szAnimeID,unsigned short sVpnPort);
//load page 顾名思义,利用TCP,刷新页面
//这边我还考虑到了VPN使用的可能性,但是这不是我要讲的重点,所以vpn port这个参数,就设为0好了
//AnimeID指的是番剧号,大家可以在b站留心一下就能发现每个番剧都有一个ID...
char* FindLastAv(char* szAvDes);
//顾名思义,找到最新的AV号,塞到szAvDes中
char * szPageR//原始数据包
char * szP//真正的html脚本
char * szPageC//把chunked拼接后的数据包
static char szHeaderFormat[];//POST请求头的模板
static char szHeaderFormatVpn[];//VPN用的,这里无视掉吧。。。
char * szH//用来放GET的请求。。。
AnimeFromList::AnimeFromList()
szPageRaw = new
char[PAGECOMPRSIZE];
memset(szPageRaw, 0, PAGECOMPRSIZE);
szPage = new
char[PAGESIZE];
memset(szPage, 0, PAGESIZE);
szPageCompr = new
char[PAGECOMPRSIZE];
memset(szPageCompr, 0, PAGECOMPRSIZE);
szHeader = new char[1024];
memset(szHeader, 0, 1024);
//各种初始化,不用说了吧
AnimeFromList::~AnimeFromList()
delete[] szP
delete[] szPageC
delete[] szPageR
delete[] szH
bool AnimeFromList::LoadPage(char * szAnimeID,unsigned short sVpnPort)
int iRet = 0; int iRec = 0;
if (!sVpnPort)//我们这边只看这里面就OK了,else里面的是VPN的代码,无视掉即可
sprintf_s(szHeader, 1024, this-&szHeaderFormat, szAnimeID);
//用szHeaderFormat,设置GET请求
EncapBy2019::TCP tcp(BILIBILI_IP, 80, nullptr);
if (!tcp.Connect())
printf(&connect() failed&);
tcp.send(szHeader, strlen(szHeader));
memset(szPageRaw, 0, PAGECOMPRSIZE);
iRet = tcp.recv(szPageRaw + iRec, PAGECOMPRSIZE - iRec, 5);
if (iRet == 0)
iRec += iR
tcp.DisConnect();
//然后就发送,while然后recv是为了接收分段的chunk数据包
//recv方法最后一个参数是超时时间,用的是select模型,这里就不详细讲了
if (iRec == 0)
printf(&获取AnimeID时Recv失败\n&);
else//这个代码块无视掉吧
sprintf_s(szHeader, 1024, this-&szHeaderFormatVpn, szAnimeID);
EncapBy2019::TCP tcp(&127.0.0.1&, sVpnPort, nullptr);
if (!tcp.Connect())
printf(&connect() failed&);
tcp.send(szHeader, strlen(szHeader));
memset(szPageRaw, 0, PAGECOMPRSIZE);
iRet = tcp.recv(szPageRaw + iRec, PAGECOMPRSIZE - iRec, 5);
if (iRet == 0)
iRec += iR
tcp.DisConnect();
if (iRec == 0)
printf(&获取AnimeID时Recv失败\n&);
memset(szPage, 0, PAGESIZE);
memset(szPageCompr, 0, PAGECOMPRSIZE);
int iLen = ConvertChunkedToNormal(strstr(szPageRaw, &\r\n\r\n&) + 4, szPageCompr, PAGECOMPRSIZE);
ungzip(szPageCompr, iLen, szPage);
//这两个函数,一个用来拼接chunk,一个用来解压,怎么实现的就不多说了,百度一堆。。。
//如果大家嫌麻烦可以在请求头里把压缩的选项(Accept-Encoding: gzip\r\n)删掉,不过这样大大降低传输速度。。。
char* AnimeFromList::FindLastAv(char* szAv)
char* i = strstr(szPage, &playnow: \'&);
//这个strstr是找最新一集的AV号,我看过b站番剧页面的html脚本,里面有个JavaScript,然后里面很幸运地有最新一集的AV号。。。我这边直接拿strstr匹配了。。。就没用正则
以下是javascript
&script type=&text/javascript&&
BangumiModules.init({
seasonId: 5017,
shareData: {
url: location.href,
title: '#bilibili#分享 番剧 “食戟之灵 贰之皿”',
desc: '#bilibili#分享 番剧 “食戟之灵 贰之皿”'
playnow: ';,
finished: 1,
copyright: false,
pubTime: ' 22:00:00',
newestEp: '13'
}//没找到,就返回0
char* p = i + 10;//10便是&playnow: \'&的长度、、、
for (i+=10; *i &= '0'&&*i &= '9'; i++){}//执行完这个之后,i便指向数字后面的一个字符,请大家自行领会
*i = 0;//把它设为0
printf(&线程%u找到Av:%s\n&, GetCurrentThreadId(), p );
//输出一下,之所以要输出线程ID是因为待会要用多线程。。。
strcpy_s(szAv, 32, p);//这个32其实填的有点不好。。。应该传参进来的。。。不过无所谓了。。。
//执行完这个函数之后呢,传进来的指针所指向的buf就被填充成了最新一集的AV号
__declspec(selectany) char AnimeFromList::szHeaderFormat[] = &GET /anime/%s HTTP/1.1\r\n&
&Host: bangumi.bilibili.com\r\n&
&Connection: close\r\n&
&Cache-Control: max-age=0\r\n&
&Accept: text/html,application/xhtml+xml,application/q=0.9,image/webp,*/*;q=0.8\r\n&
&User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0. Safari/537.36 SE 2.X MetaSr 1.0\r\n&
&Accept-Encoding: gzip\r\n&
&Accept-Language: zh-CN,q=0.8\r\n\r\n&
__declspec(selectany) char AnimeFromList::szHeaderFormatVpn[]=&GET http://bangumi.bilibili.com/anime/%s HTTP/1.1\r\n&
&Host: bangumi.bilibili.com\r\n&
&Proxy-Connection: close\r\n&
&Cache-Control: max-age=0\r\n&
&Accept: text/html,application/xhtml+xml,application/q=0.9,image/webp,*/*;q=0.8\r\n&
&User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0. Safari/537.36 SE 2.X MetaSr 1.0\r\n&
&Accept-Encoding: gzip\r\n&
&Accept-Language: zh-CN,q=0.8\r\n\r\n&
这个类其实已经可以直接用了,先LoadPage,然后FindLastAv,最后判断,如果Av不一样了,那就发送评论。但是呢,天下抢楼,唯快不破,这边我要用多线程,不然这个太慢了。以下就是多线程的实现:
先来大概讲下我这个多线程的思路吧,首先我不停地创建线程,然后每个线程做以下几件事情:
1.调用LoadPage加载页面
2.调用FindLastAv找到最后一集的Av号
3.把这个Av号作为一个字符串(string类),push到STL的一个队列里面
PS:其实这里不停地创建线程可以优化成每个线程死循环做同样的事情,这里我懒得优化了,反正也不难
然后呢,main函数通过调用某个方法,实现从队列中取出一个字符串,然后在将这个字符串与上一个AV号进行比较,如果AV号改变了(即更新了),就发送一个评论(调用SendComment)。
class MultThrdForAnimeList
MultThrdForAnimeList();
~MultThrdForAnimeList();
int StartThread(string * AnimeID);//这个函数用来做初始化。。。
bool GetString(char*);//从对列中pop出一个字符串,主函数到时候就调用这个
bool IfEmpty();//判断队列是否为空,用于当队列为空时进行阻塞
CRITICAL_SECTION//用于做queue的互斥
string strID;
queue&string& lQ//这边用了STL的queue
int iNumOfT
CRITICAL_SECTION cs4N//用于做线程数的互斥
static unsigned int _stdcall SendThread(void*);
static unsigned int _stdcall CreateSendThread(void*);
MultThrdForAnimeList::MultThrdForAnimeList()
InitializeCriticalSection(&cs);
InitializeCriticalSection(&cs4Num);
iNumOfThr = 0;
MultThrdForAnimeList::~MultThrdForAnimeList()
DeleteCriticalSection(&cs);
DeleteCriticalSection(&cs4Num);
int MultThrdForAnimeList::StartThread(string * AnimeID)
strID = *AnimeID;
return _beginthreadex(0, 0, MultThrdForAnimeList::CreateSendThread, this, 0, 0);
bool MultThrdForAnimeList::GetString(char* szEpsID)
while (IfEmpty()){}//阻塞,直到队列不为空
EnterCriticalSection(&cs);
if (!lQueue.empty())
str = lQueue.front();
lQueue.pop();
strcpy_s(szEpsID, 32, str.c_str());
LeaveCriticalSection(&cs);
LeaveCriticalSection(&cs);
bool MultThrdForAnimeList::IfEmpty()
EnterCriticalSection(&cs);
bool ret = lQueue.empty();
LeaveCriticalSection(&cs);
unsigned int _stdcall MultThrdForAnimeList::SendThread(void* pThis)
//这个线程函数调用LoadPage和FindLastAv,然后把AV号塞到队列里去
char szAv[32];
MultThrdForAnimeList* This = (MultThrdForAnimeList*)pT
AnimeFromL
if (!a.LoadPage((char*)This-&strID.c_str(),0))
EnterCriticalSection(&This-&cs4Num);
This-&iNumOfThr--;
LeaveCriticalSection(&This-&cs4Num);
if (!a.FindLastAv(szAv))
EnterCriticalSection(&This-&cs4Num);
This-&iNumOfThr--;
LeaveCriticalSection(&This-&cs4Num);
str = szAv;
EnterCriticalSection(&This-&cs);
This-&lQueue.push(str);
LeaveCriticalSection(&This-&cs);
EnterCriticalSection(&This-&cs4Num);
This-&iNumOfThr--;
LeaveCriticalSection(&This-&cs4Num);
return str.length();
unsigned int _stdcall MultThrdForAnimeList::CreateSendThread(void* pThis)
if (((MultThrdForAnimeList*)(pThis))-&iNumOfThr &= 10)//这个10可以根据你自己的网速改,网速越快,可以调得越高,我家50ping,大概就10
//这个小于等于10就是用来抑制线程数的
_beginthreadex(0, 0, MultThrdForAnimeList::SendThread, pThis, 0, 0);
EnterCriticalSection(&((MultThrdForAnimeList*)(pThis))-&cs4Num);
((MultThrdForAnimeList*)(pThis))-&iNumOfThr++;
LeaveCriticalSection(&((MultThrdForAnimeList*)(pThis))-&cs4Num);
Sleep(50);//网速越快,这个可以调得越小
//最后就是主函数了
int main()
if (WSAStartup(MAKEWORD(2, 2), &wsa))
printf(&网络环境初始化失败\n&);
char* szCookie = new char[2048]; memset(szCookie, 0, 2048);
char* szLastAv = new char[32]; memset(szLastAv, 0, 32);
char* szMsg = new char[4096]; memset(szMsg, 0, 4096);
char * szID = new char[32]; memset(szID, 0, 32);
GetCookieFromFile(szCookie, 2048);
GetMsgFromFile(szMsg, 4096);
GetIDFromFile(szID, 32);
str = szID;
mtl.StartThread(&str);
GetLastAvFromFile(szLastAv, 32);
//这几个GetXXXFromFile基本上就是从文件中获取信息,就是FILE的操作之类的,这里就不详细讲了
str = szLastAv;
lOld.push_back(str);
*szLastAv = 0;
mtl.GetString(szLastAv);//从队列中取一个字符串出来,这里看不到队列,因为我已经把它封装起来了
printf(&最新视频AV为:%s\n&, szLastAv);
str = szLastAv;
if (find(lOld.begin(), lOld.end(), str) == lOld.end())
while (!SendComment(szCookie, szLastAv, szMsg));
lOld.push_back(str);
delete[] szID;
delete[] szC
delete[] szLastAv;
delete[] szM
WSACleanup();
//基本上就这么多,个人认为讲的蛮清楚了,基础知识比方说HTTP协议啊我就不讲了,百度一下吧,不难如何看 bilibili 自打脸在新番前加广告行为?
19:01:25 +08:00 · 8665 次点击
bilibili 现在也是终于不甘寂寞在新番视频前自打脸的添加了沪江网的贴片广告。
知乎传送门
第 1 条附言 &·&
00:16:30 +08:00
官方回复:https://www.zhihu.com/question//answer/
115 回复 &| &直到
18:47:47 +08:00
& & 19:19:32 +08:00
虽然会抱怨其实并不是怎么在意
只要视频不被和谐就好
& & 19:26:47 +08:00
反正不看 b 站了,变味了
& & 19:28:00 +08:00 via iPhone
又要马儿跑得快,又要马儿不吃草。中国的用户真难伺候
& & 19:28:33 +08:00
不登录看不了竟然...
& & 19:33:26 +08:00 via Android
@ 我登录了都还看不了 直接跳转到 app 首页
& & 19:37:44 +08:00 via Android
逸国一贯作风
& & 19:40:36 +08:00 via Android
不是难不难侍候的问题,而是言而无信的问题,懂不?
& & 19:41:39 +08:00 via iPhone
& & 19:43:36 +08:00
@ 他是 14 年在 bilibili 蓝贴上自己承诺不在正版番剧前添加贴片广告的
& & 19:49:25 +08:00 via Android
还好我不是 B 站用户‖^)/
& & 19:51:21 +08:00
bilibili: 我给大家表演我家的马儿不吃草
LZ: 发现你家马还是吃草了
3 楼: 你们真难伺候
& & 19:59:24 +08:00
ibib 爆破手何在?
& & 20:03:11 +08:00
& & 20:05:12 +08:00
能不去 B 站我也不想去,人家有版权……
& & 20:06:07 +08:00 via iPhone
你们啊,太年轻太天真了,真觉得徐逸的脸还值钱么?
& & 20:06:36 +08:00 via Android
微信表情那个广告我没在意 选择性忽视也没跳但知乎上那张图不知道是哪个番的 我还没看到 如果再添加其它广告确实有点变味啊...
& & 20:10:02 +08:00
不让你掏钱白看还要唧唧歪歪,某些人真是难伺候。
& & 20:10:20 +08:00
不是说 bishi 已经基本是吉祥物了么……
& & 20:11:53 +08:00 via Android
徐逸玩盈利已经不是一天两天的事了,居然还有一群逸民跪舔洗地
& & 20:17:45 +08:00 via Android
& & 20:18:49 +08:00 via Android
@ 最近一直在用鲁迅追番,除了更新慢了点,其它都特别好用。 luxun.pro
& & 20:19:23 +08:00 via Android
& & 20:19:24 +08:00
& & 20:21:18 +08:00 via Android
@ 既然已经添加了,我觉得这部番之前是不会被撤下了
& & 20:22:13 +08:00 via iPhone
如果说免费用户是难伺候,那么付款用户是不是算违约.
& & 20:24:47 +08:00 via Android
很正常,为了生存,新番承包计划根本不能回本,如果不加广告,投资人的钱总会烧完的。
& & 20:28:02 +08:00
还真有了 不过我大部分是下载看 能不去就不去 b 站
& & 20:35:18 +08:00
明明是东京电视台要求所有播出方加的广告……
不知道为什么大家都这么愤怒
& & 20:40:18 +08:00
加广告可以理解吧, 承包的人实在不多, 不盈利早完干不下去. 不过要是能给之前已经承包的退款就好了...
9bishi 确实打脸了,
也该道歉!
不过, 这么多人口诛笔伐 B 站加广告实在不理解, 用免费的习惯了?
至于 &玩盈利...& , 不玩盈利那玩啥? 玩公益?
投资人撤资了大家就高兴了...
至于 &http://wiki.esu.im/&
--& &因为当时国内弹幕视频网站数量较少,潜在用户众多,〝市场前景〞较好,所以妄图盈利的&
&妄图盈利&? &妄图&这词用的真好
& & 20:48:21 +08:00
正好,上周写了一篇《 bilibili 新番承包付费意愿调查》
说得好像不加片头广告,你们就愿意付费了一样!
& & 20:50:03 +08:00
东电的番是要求加广告的吧,其它番就没有,以前广告是微信表情,现在换个口味感觉还有点意思,早上没看到,刚才刷新看了 5 遍。
& & 20:52:12 +08:00
@ 这和你给的链接是一回事么?自己点开 lz 的链接看看吧。
& & 21:03:47 +08:00
@ 鲁迅追番据说是不错,但是在无删减的情况下,我觉得还是应该去版权方观看
& & 21:11:23 +08:00 via Android
bt 党路过。。现在的弹幕太无趣了,又重回 bt 了。。话说这几年变化真太大,极影漫游动漫花园国内站都没了, AB 站也是各种折腾。。
& & 21:11:56 +08:00
其实这个广告是可以关的…… [可能还有点良心吧
举个例子:
pre_ad 参数, 0 是不展示广告, 1 则为展示。
& & 21:12:10 +08:00 via Android
& & 21:16:58 +08:00
毕竟是睿国了
& & 21:17:54 +08:00
说得好像不加片头广告,你们就愿意付费了一样+1
情怀不能当饭吃。
而且,物是人非。
& & 21:23:28 +08:00
@ 好吧我早上看的时候还是表情广告……
& & 21:27:24 +08:00
@ 怪不得最近几次看完视频之后都能看到你的 id ,一开始我还以为是错觉,哈哈哈
& & 21:28:15 +08:00
& & 21:38:55 +08:00
逸万富翁很穷的,倒贴 7 位数呢……
你们逸国子民看个贴片广告都不行?!
& & 21:41:10 +08:00 via iPhone
又有正版情结( v2er ),又不愿付费,又不愿看广告……甚至看其它视频连投币给 up 都不舍得……真要赶绝服务方么……
承诺永远免费或是永远无广告,那确实应该批评,牛吹大了,正如承诺自己永远不需要吃饭一样。但是像 360 确实承诺并做到一直免费了啊,却依然很不被待见。
为啥我用客户端看没广告的……
& & 21:41:14 +08:00
每次 国产厂商 恼人的 或者 背弃承诺的 广告行为
一定会出现“又要马儿跑得快,又要马儿不吃草”
对,说的就是你
& & 21:44:21 +08:00
看来很有可能是如传闻一样被架空了啊
& & 21:48:26 +08:00
加广告其实没什么
如果不是 bishi 承诺过不加广告也不会引起这么大反应
& & 21:49:11 +08:00
@ 你在这拿 360 比。。。。。。。。。
& & 21:56:17 +08:00
b 站是一个资金不太充裕的小网站
& & 22:09:54 +08:00
@ 好精彩!
& & 22:11:23 +08:00 via Android
@ 23333 你这黑的
& & 22:13:08 +08:00 via Android
@ 那你也之前出个蓝贴声明下吧,重点不是在于出了广告,而是违背信用
& & 22:13:49 +08:00 via Android
@ 客户端目前还没有加上广告
& & 22:19:09 +08:00
@ 额,我说三楼呢。。。
& & 22:19:23 +08:00
B 站很大一块收入明显是手游分成,看看客户端如何千方百计突显手游就知道了。
整体来说绝对不亏,单单拿承包不赚钱来说事有意思吗?
& & 22:27:35 +08:00
@ 一个视频网站,需要靠手游分成赚钱,这健康吗?
& & 22:32:01 +08:00
就像大部分手游从大部分免费玩家不赚钱、从少数土豪赚大钱, B 站新番播放可以少赚甚至亏钱,但手游、直播之类业务的盈利足够覆盖亏的那些钱。
同时,就像手游如果没有大量免费玩家陪玩就吸引不到土豪, B 站没有免费看番用户堆出来的弹幕吸引访问量然后引流到赚钱业务,那也同样赚不到钱。
这是商业公司的最基本策略罢了,说“又要马儿跑,又要马儿不吃草”的真是 TSSN ,连什么是草都不知道。
//这次似乎只是因为版权方规定加广告而已,不过假如哪天 B 站按自己意愿添加广告,没什么好惊讶也没什么好洗地的。
& & 22:35:40 +08:00
“稀神探女说 B 站聚变未遂”
& & 22:36:16 +08:00
再正常不过了。
你知道有多少行业的主营业务不赚钱,但依靠主营业务跑量、其他业务赚钱吗?
何况 B 站本来也早就不是纯粹的视频网站了。
& & 22:36:19 +08:00
能看番就好了
没广告最好
有广告也能看
不像优某酷搞个独家非会员不能看
至少我看番并不在乎是否有广告
商业本来就是追求利益的 而且今年的新番价格和去年已经不是一个价位的了
加一些广告挺正常的
至于前面怎么说
在利益面前都是屁话
类似的打脸的例子互联网届也不少吧
被打脸说明至少有脸
而有的优某酷非会员只能看 5 分钟这种做法还有脸么
我不是 b 站粉
我只是优酷黑
只是奇怪同样的招黑而没有人骂优酷而已
& & 22:43:56 +08:00
@ 照你这么说,新番本来就是拿来引流的,拿来做广告也没什么啊。
& & 22:59:03 +08:00
说得好像不加片头广告,你们就愿意付费了一样
又有正版情结( v2er ),又不愿付费,又不愿看广告……甚至看其它视频连投币给 up 都不舍得……真要赶绝服务方么……
------------ 以上+1 --------------------------
有个可以看片的就行了,何况这广告还能跳过的,还要咋地。。。人家毕竟也要盈利的,更不要论说“东电要求所有播出方片头要加广告”
爱看不看咯,我个人觉得,如果你觉得跟你的情怀相违背,就不要看了。。。何必那么矫情。。
感觉要什么都没有,你们才开心。。。
& & 23:01:36 +08:00 via iPhone
@ 你全家都是 TSSN ,免费的问候,不谢
& & 23:17:22 +08:00
当时话说的太满了,谁知道和东电合作的时候回吃这个亏 233 ,当时 bishi 太年轻
& & 23:43:33 +08:00 via Android
@ 这不是猴子吗
& & 23:45:08 +08:00
视频前插播广告赚钱。。这才是不健康的,我印象中 youtube 也做不到吧。免费用户,只是无法通过承包之类的方法赚钱。。不代表逸国无法从免费用户中赚到钱,你们这么把免费用户批判一番,这些人要是跑了,逸国估值能缩个 90%?
& & 23:48:18 +08:00 via Android
@ B 站用户体验是目前国内视频站最好的了
& & 23:58:51 +08:00
@ youtube 最近已经不只是片头插了,片中都会随机插广告。我看个半小时的片给我插了四五次 15 秒广告。
& & 23:59:09 +08:00 via Android
看到撕逼感觉十分带感 hhhh又看了遍恶俗 觉得还是难以相信 恶俗百科的恶俗程度远超所叙述之人啊一堆神马也不懂的二刺塬瞎撕逼也就算了为啥这个老司机一大堆的地方也会有谜一样的撕逼呐有广告又不是不能看 而且以各位水平 屏蔽广告轻而易举 那么有什么必要专门骂一下网站反正 b 站吃枣药丸 何不携滑稽看戏
& & 00:07:50 +08:00
于是盈利了没?盈利的话,我建议 b 站插个 10 个广告
& & 00:09:30 +08:00
@ 没进谷歌的水平,有没有盈利就不知道了。
只知道每次插我都有砸键盘的冲动。
& & 00:10:15 +08:00 via Android
@ 不小心点成感谢了当初 B 站说不加广告可是大新闻
& & 00:13:45 +08:00 via Android
@ 对啊,做广告没错啊。
现在婊的只不过是 bishi 以前吹牛说不加广告,以及做广告这种中性的商业行为,却有人洗得好像不打广告就要亏七位数、打广告是多么伟光正一样。
你回的两帖都莫名其妙,呵呵
点在于 bishi 说过 B 站版权新番不加广告。其他倒也没啥,反正 B 站也就是个商业公司。
& & 00:21:57 +08:00 via Android
Youtube 的广告姑且还能忍。
google 最不能忍的广告是猎豹清理助手 app 那种黑白红闪瞎眼的广告,提示说你手机有垃圾需要清理。举报完全没用,还是多语言,中英日都躲不过。
& & 00:28:20 +08:00
@ 当初不加广告的时候是希望通过承包 cover 这部分损失的,然而现实是用户既不想付费承包(虽然这不是义务,完全是自愿),也不愿意加广告。要求 b 站讲情怀不加广告, b 站情怀一把自愿承包,用户又开始讲利益。评价为「又要马儿跑得快,又要马儿不吃草」有什么不对?
& & 00:37:26 +08:00
无所谓,已经回归 BT 看番了。
虽然开了历史的倒车,但是体验却意外的提升了——
1. 从单一平台获取所有想看的新番
2. 不用看到烦人的弹幕了
& & 01:00:19 +08:00 via Android
联系一下上下文啊。
LZ 是说 bishi 以前说不加广告,结果又加了广告自打脸。 3 楼突然扯马儿跑和吃草,然后还嘲笑观众姥爷,真是莫名其妙。
就像我问你借钱后赖账了,你问我以前不是说好有借有还的吗?我回答“钱财乃身外之物。你这么计较真是守财奴。” 钱财乃身外之物这句话是对的,但这算毛回答?
顺便,其实 B 站主要的草是游戏、直播之类。
另外,我从一开始就不认为 B 站真想通过承包 cover 损失。买番不像手游,手游扩大规模时成本增加较少,土豪玩家增加一些,利润就会增加;新番多一部就是一部成本,土豪却不会成比例增长,假如单部还有可能拼盈亏平衡,更多新番只会摊薄承包收入罢了。
& & 01:05:52 +08:00
如何看写代码要领工资的行为
& & 01:15:51 +08:00
@ 我说了,这个不加广告在我看来是有条件的,通过承包计划。
所以你这个比喻是不恰当的,你在失信的同时是获利一方,而失信的 b 站并不在获利这一边。
而且新番计划我理解,「理想」并不是靠土豪盈利的,相反,正如我《 bilibili 新番承包付费意愿调查》中说的,每个订阅用户付一块钱,就能获得比现在更多的收入。而且,是否购买新番根本由不得 bilibili ,不买就没得放啊!
& & 01:21:13 +08:00
一个曾经在 AC 一人饰四角制造混乱的网站,还指望他能有什么底线可言?
& & 04:20:49 +08:00
这锅得让写标题的人来背
& & 07:43:04 +08:00 via iPhone
@ 还是把呵呵送给你妈吧
& & 08:44:58 +08:00 via iPhone
我想看大家在得知是版权方要求加广告后再怎么继续撕,但大家好像都不理这茬啊
& & 08:54:42 +08:00 via iPhone
这个帖是我见过感谢最多的帖
& & 08:56:41 +08:00
其实加广告没所谓啊,但别像优酷土豆等网站加那些 毫无养分的广告。 最好可以学油管,有时候可以手工跳开。
& & 09:01:34 +08:00
到时候 B 站没钱维持了,是不是又有人要说早知如此,何必当初死撑。
& & 09:23:34 +08:00
@ 给你讲个笑话, b 站没钱
& & 09:41:21 +08:00
用第三方客户端看
& & 10:14:29 +08:00
免费用户是不付钱没错
但是有本事拉投资的时候把免费用户贡献的 PV 去掉再说啊
& & 10:16:49 +08:00
让我想起了 360 的那封不做搜索医疗竞价排名的信,(逃
& & 10:19:17 +08:00
马儿与草的言论跟违背承诺有半毛钱关系?
两码子事情,请分开来说。
& & 10:30:12 +08:00
能举报吗?这个 chunzhenniandai 感觉是单纯喷子啊
& & 10:53:18 +08:00
搞个去广告插件或脚本不是分分钟的事情吗 ........?
& & 11:01:41 +08:00
其实就是说太满了
当时徐特首微博主站都发布专业声明
结果徐特首驾崩了就瞬间打脸 哎 真是心疼我二次元
& & 11:25:51 +08:00
表示不影响观看体验在意就不在意,不如说在 b 站的广告时间可以看到各种弹幕感觉会很好玩吧
& & 11:27:15 +08:00
&又要马儿跑得快,又要马儿不吃草
别既当婊子,又立牌坊
为什么哔哩哔哩 (Bilibili) 融资计划书曝光之后引发巨大争议? - mawing 的回答 - 知乎
& & 12:22:07 +08:00 via Android
@ 「在我看来」
& & 12:25:49 +08:00 via Android
@ 非常精彩
& & 12:58:19 +08:00
看了几楼,想说一句: Facebook 是一个社交的网站,要靠广告和出售数据平衡收支,这健康吗?
& & 13:15:24 +08:00
b 站已经不是逸站了把,所以做出什么行为都不惊讶了
& & 13:43:25 +08:00 via Android
为什么我的 RE 没有广告 0.0
& · & 1002 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.0 · 77ms · UTC 17:27 · PVG 01:27 · LAX 09:27 · JFK 12:27? Do have faith in what you're doing.

我要回帖

更多关于 bilibili番剧排行 的文章

 

随机推荐