B站自动搜索关键词,并自动评论+点赞+收藏

本文介绍了一个使用Python编写的B站自动搜索关键词并进行评论、点赞和收藏的脚本。代码分为评论、获取视频URL、点赞和主函数四个部分。灵感来源于B站视频评论区的机器人回复。正常运行需要Bilibil Auto Comment文件夹和相应的Cookie。注意避免频繁运行导致验证码需求,且验证码可以随意填写即可成功请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我将代码分成四部分,分别是评论(comment),获取视频网站(geturl) 点赞(like)和主要调用(main) 以及收藏(shoucang)

灵感来自:

        看嘉然二创的时候下面有时候会有评论,然后机器人自动回复,并计算这是今天第几个视频.于是写了自己的脚本.发给大家学习

Csrf和Cookie自己找!

想要正常使用,需要在桌面创建一个Bilibil Auto Comment这个名字文件夹,最好将py文件也放入,将每个代码块都分别写入py文件,同时命名

 不要一次性多次运行脚本,否则这个账号用其他如手机和笔记本登录,在评论视频的时候,仍然需要输入验证码,第二天就好了

并且如果出现了这种情况,就算验证码怎么输入都会请求.失败

1.点赞


import requests
import json
headers = {
    'Cookie':cookie,
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'
}
url = "https://api.bilibili.com/x/web-interface/archive/like"
def like(av):
    data = {'aid':av,
    'like':'1',
    'csrf':}
    resp = requests.post(url=url,headers=headers,data=data).text
    resp = json.loads(resp)
    return (resp['message'])

Cookie自己去浏览器找一下,需要登录状态下的cookie

 2.评论:

import json
from os import path
import requests
import re
import shibie
"""
//////////////////////////================\\\\\\\\\\\\\\\\\\\\\\
我发现data中的code不管填什么都能过验证码,遂弃用识图
\\\\\\\\\\\\\\\\\\\\\\\\\\================//////////////////////
"""
headers_1 ={"user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}
def download(av,pic,comment):
    with open(r"C:\Users\Sun\Desktop\Bilibil Auto Comment\get.jpg",'wb') as f:
        f.write(pic)
    code = shibie.pic(r"C:\Users\Sun\Desktop\Bilibil Auto Comment\get.jpg")
    comments = {
        'oid':int(av),
        'type': '1',
        'message': comment,
        'plat': '1',
        'code':"Apple",
        'jsonp': 'jsonp',
        'csrf': 自己找
    }
    url = "https://api.bilibili.com/x/v2/reply/add"
    resp_1 = requests.post(url = url,headers=headers,data=comments).text
    result = re.findall('"success_toast":"(.*?)"',resp_1)
    if result == ['']:
        print("再次失败!验证码错误!-------再次识别!")
        code = shibie.pic(r"C:\Users\Sun\Desktop\Bilibil Auto Comment\get.jpg")
        print("新验证码:"+code)
        resp_1 = requests.post(url = url,headers=headers,data=comments).text
        result = re.findall('"success_toast":"(.*?)"',resp_1)
        print(result[0])
        return result[0]
    else:
        return str(result) 
def get_url(av,js,comment):
    url_=js['data']['url']
    url_new = url_.replace("\u0026","&")
    resp1 = requests.get(url=url_new,headers=headers_1).content
    download(av,resp1,comment)
def requ(av,comment):
    global headers
    proxies = {'http':'60.211.218.78:53281',
    'http':'183.247.152.98:53281'}
    headers = {
        'Cookie':"cookie",
        'Origin': 'https://www.bilibili.com',
        'Referer': 'https://www.bilibili.com/video/av/'+av+'?spm_id_from=333.334.home_popularize.3',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'
        }
    comments = {
            'oid':int(av),
            'type': '1',
            'message': comment,
            'plat': '1',
            "code":"Apple",
            'jsonp': 'jsonp',
            'csrf': 自己找
    }
    url = "https://api.bilibili.com/x/v2/reply/add"
    resp = requests.post(url = url,headers=headers,data=comments,proxies=proxies).text
    result = re.findall('"success_toast":"(.*?)"',resp)
    if result == ['']:
        get_url(av,json.loads(resp),comment)
    else:
        return str(result)          #这里返回是否成功的结果

 Comment字典中,code对应的value就是验证码,随便填就行了

本来是准备识别验证码的,但是不管用什么模块最终结果总是和期望有所差距,于是在某一次无聊的随意设置后,我发现随便输入一个验证码就可以请求成功了

#寻找url
from ast import keyword
import requests
import re
urls = []
def geturl(keyword,page):
    url = f"https://api.bilibili.com/x/web-interface/search/all/v2?__refresh__=true&_extra=&context=&page={page}&page_size=42&order=&duration=&from_source=&from_spmid=333.337&platform=pc&highlight=1&single_column=0&keyword={keyword}&preload=true&com2co=true"
    headers= {"user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
    "origin":"https://search.bilibili.com"}
    resp = requests.get(url = url,headers=headers).content.decode()
    url = re.findall('"arcurl":"(.*?)",',resp,re.S)
    title = re.findall('"title":"(.*?)"',resp,re.S)
    for count in range(len(url)):
        urls.append(url[count])
    return urls     #这里返回获取到的全部视频url

 最后是调用了

import time
import like
import geturl
import comment
import re
import random
comments=[]
av = []
urls = geturl.geturl("刀哥",2)		#这里的数字代表这是第几页(page)
for url in urls:
    av.append(re.search('\d+$',url).group())
for i in range(len(av)):
    time.sleep(0.2)
    result = comment.requ(av[i],random.choice(comments))
    like_ =like.like(av[i])
    try:
        if int(like_) == 0:
            print(av[i],result,i,"点赞成功")
    except:
        print(av[i],result,i,"点赞失败")

comments列表填想发的评论,然后随机评论

urls 可以用for 然后挨个页循环,我在测试的时候没时间每次都遍历一遍,所以直接指定页数
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值