b站如何一次性把up主全部取消关注,让自己去学习

刚打开b站准备学习,看到了动态上面一个小红点。忍不住点开进去,然后说 “看完这个就学习”。最后花了几个小时才停下来。

于是痛定思痛,取消所有up主的关注,这样就不会推送消息了。但是一个个点击取消关注太慢了,还要进up主页,点取消关注,再点关注才行。老子要一次性全部取消。

1.首先要进入动态,获取所有关注up主的uid。

找到了请求接口
在这里插入图片描述
然后写出get请求即可。(先不考虑cookies,之后会提到)

headers = {
    'authority': 'api.vc.bilibili.com',
    'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"',
    'accept': 'application/json, text/plain, */*',
    'sec-ch-ua-mobile': '?0',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36',
    'sec-ch-ua-platform': '"Windows"',
    'origin': 'https://t.bilibili.com',
    'sec-fetch-site': 'same-site',
    'sec-fetch-mode': 'cors',
    'sec-fetch-dest': 'empty',
    'referer': 'https://t.bilibili.com/',
    'accept-language': 'zh-CN,zh;q=0.9',
    'cookie': 'l=v; buvid3=814C060E-FE71-4DE9-9494-9AAB071A6CC353938infoc; rpdid=|(YuJY)mlRR0J\'ulmJJRmu~); LIVE_BUVID=AUTO7815939508172212; blackside_state=1; SESSDATA=d48f5588%2C1640098202%2Ca1ba8%2A61; bili_jct=b191c28d22553db5cddcf3d5e346dfce; DedeUserID=474351218; DedeUserID__ckMd5=3ae2bdd8036b1b59; sid=k7amn9j5; _uuid=D7D402F4-66ED-53F3-70D7-F966BB23AD2564644infoc; CURRENT_BLACKGAP=1; buvid_fp_plain=814C060E-FE71-4DE9-9494-9AAB071A6CC353938infoc; fingerprint3=ed6d0e5c32432f716869d80460572228; fingerprint=0ef2e232bef7ea64c80047daafe07ed1; fingerprint_s=98e441f41046c995e01d5a0afe498aca; CURRENT_QUALITY=80; video_page_version=v_old_home; buvid_fp=814C060E-FE71-4DE9-9494-9AAB071A6CC353938infoc; i-wanna-go-back=1; b_ut=6; CURRENT_FNVAL=2000; bp_video_offset_474351218=601020118333556205; innersign=0; b_lsid=BF10782FE_17D8F9EB610; bp_t_offset_474351218=601079023816686630; PVID=1',
}

#获取关注所有up信息,尤其是uid。
def get_uplist():
    resp = session.get('https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/w_dyn_uplist', headers=headers)
    print(resp.text)
    list=jsonpath(resp.json(),"$..[uid,uname]")
    print(list)
    return list

在这里插入图片描述

2.然后找到取消关注的post请求,根据up主uid构造data参数,直接提交就能取消关注了。

找到请求接口
在这里插入图片描述
根据uid构造data (yourcsrf是用于用户校验的,之后讲,没有的话会校验失败)

data = {
  'fid': '353230307',
  'act': '2',
  're_src': '11',
  'spmid': '333.999.0.0',
  'extend_content': '{"entity":"user","entity_id":353230307}',
  'jsonp': 'jsonp',
  'csrf': yourcsrf
}

def modify(uid):
    data['fid']=uid
    data['extend_content']='{"entity":"user","entity_id":'+uid+'}'
    resp=session.post('https://api.bilibili.com/x/relation/modify', headers=headers, data=data)
    print(resp.text)

提交后,返回成功!
在这里插入图片描述
刷新后确实取消关注了
在这里插入图片描述
这样就不需要手动点击取消关注了!

3.连起来操作,直接取消所有关注!!!

在这里插入图片描述

import requests
from jsonpath import  jsonpath

headers = {
    'authority': 'api.vc.bilibili.com',
    'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"',
    'accept': 'application/json, text/plain, */*',
    'sec-ch-ua-mobile': '?0',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36',
    'sec-ch-ua-platform': '"Windows"',
    'origin': 'https://t.bilibili.com',
    'sec-fetch-site': 'same-site',
    'sec-fetch-mode': 'cors',
    'sec-fetch-dest': 'empty',
    'referer': 'https://t.bilibili.com/',
    'accept-language': 'zh-CN,zh;q=0.9',
    'cookie': yourcookie,
}

#获取关注所有up信息,尤其是uid。
def get_uplist():
    resp = session.get('https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/w_dyn_uplist', headers=headers)
    list=jsonpath(resp.json(),"$..[uid,uname]")
    print(list)
    return list

data = {
  'fid': '353230307',
  'act': '2',
  're_src': '11',
  'spmid': '333.999.0.0',
  'extend_content': '{"entity":"user","entity_id":353230307}',
  'jsonp': 'jsonp',
  'csrf': yourcsrf
}

def modify(uid,uname):
    data['fid']=uid
    data['extend_content']='{"entity":"user","entity_id":'+str(uid)+'}'
    session.post('https://api.bilibili.com/x/relation/modify', headers=headers, data=data)
    print(uname,"已经被取消关注")

if __name__ == '__main__':
    session=requests.session()
    while True:
        list=get_uplist()
        if list:
            for i in range(0,len(list),2):
                modify(list[i],list[i+1])
        else:
            break

再进来已经空空如也了
在这里插入图片描述

基本上我到这就行了,但是还有两个问题没有讲清楚。cookies的获取要用session模拟登录。

然后还有data里面的字段校验字段 csrf,发现它的值和cookies里面的一个值字段一模一样,就是 bili_jct

这样问题就简单了,只需要模拟登录,然后获取cookies,提出bili_jct做为data里面的csrf

之后更新。一次性写完太累了。

这次突发奇想写出来的一篇文章,其实也可以做为简单爬虫进行练习,如果还有别的爬虫问题欢迎联系

在这里插入图片描述

<think>嗯,用户想开发一个蛋糕甜品店管理系统,需要包括库存、销售、订单这些功能。首先,我得理清楚用户的具体需求。根据他们提到的引用内容,系统可能需要用户管理、商品信息管理、订单管理这些模块。引用[3]提到系统分为管理员和用户角色,所以权限管理也是重点。 接下来,技术选型方面,用户提到的SSM框架(Spring、Spring MVC、MyBatis)和B/S结构是合适的,因为引用[3]和[1]都用了Java和MySQL,这样可以保证系统的稳定性和扩展性。前端可能需要HTML5、Vue.js这些技术,或者考虑移动端的话,引用[2]提到的Android也可以作为参考。 功能模块划分是关键。库存管理需要实时跟踪,包括入库、出库和预警,这样避免缺货。销售管理可能需要统计和促销功能,比如引用[2]里的个性化推荐,可以提升用户体验。订单管理要处理状态流转,引用[4]中的确认收货操作需要实现,可能还要集成支付接口。 数据库设计部分,用户表、商品表、订单表、库存表这些是基础。订单明细表关联商品和订单,库存表记录实时数量。索引优化和事务处理也很重要,确保数据一致性。 开发步骤方面,先搭建SSM环境,然后分模块开发。比如先做用户登录注册,引用[1]中的业务流程需要验证和权限控制。商品管理模块可能需要图片上传,库存预警用定时任务检查。订单模块涉及状态机,确保流程正确。 测试和优化阶段,性能测试和压力测试不能少,尤其是促销时的高并发情况。引用[2]提到的移动端适配,可能需要响应式设计或者开发APP版本。最后部署到Tomcat,用Nginx做负载均衡,保证稳定运行。 用户可能还关心如何扩展,比如添加移动端或者数据分析功能。未来可以考虑小程序或者大数据分析,引用[2]的社交功能也是不错的扩展点。需要确保系统安全,比如防止SQL注入,数据加密等。总之,整个设计要模块化,方便后续迭代和维护。</think>### 一、系统需求分析与设计思路 根据引用[1][3][4],蛋糕甜品店管理系统需覆盖库存、销售、订单三大核心功能,同时支持管理员与普通用户的双角色操作。以下是设计框架: #### 1. 功能模块划分 | 模块 | 子功能 | 实现要点 | |-----------|------------------------|--------------------------------------| | **用户管理** | 注册/登录/权限控制 | 采用RBAC模型(基于角色的访问控制)[^3] | | **库存管理** | 商品入库/出库/库存预警 | 实时更新库存量,设置阈值触发预警(如库存低于10件时通知) | | **销售管理** | 商品展示/促销活动/销售统计 | 集成ECharts实现可视化数据报表[^2] | | **订单管理** | 订单生成/支付集成/状态追踪 | 支持微信/支付宝接口,状态机实现订单生命周期管理[^4] | #### 2. 技术选型建议 ```mermaid graph TD A[前端] --> B[HTML5+Vue.js] A --> C[移动端适配] B --> D[Element-UI] D --> E[数据可视化] F[后端] --> G[SSM框架] G --> H(Spring Security) H --> I[权限控制] F --> J[MySQL 8.0] J --> K[Redis缓存] ``` ### 二、核心功能实现方案 #### 1. 库存管理模块 - **数据库表设计** ```sql CREATE TABLE inventory ( product_id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, stock INT DEFAULT 0 CHECK(stock >=0), alert_threshold INT DEFAULT 5, last_update TIMESTAMP ); ``` - **预警逻辑实现** ```java @Scheduled(cron="0 0 8 * * ?") // 每天8点检查 public void checkInventory() { List<Product> lowStock = productDao.selectByCondition( "WHERE stock < alert_threshold"); if(!lowStock.isEmpty()) { emailService.sendAlert(lowStock); } } ``` #### 2. 订单状态流转 ```mermaid stateDiagram-v2 [*] --> 待支付 待支付 --> 已支付: 支付成功 已支付 --> 已发货: 仓库出库 已发货 --> 已完成: 用户确认 待支付 --> 已取消: 超时未支付 已支付 --> 退款中: 用户申请 退款中 --> 已关闭: 退款完成 ``` ### 三、系统集成与优化 1. **支付接口集成** - 使用支付宝开放平台的`alipay-sdk-java` - 实现异步回调验证: ```java @PostMapping("/notify") public String paymentNotify(HttpServletRequest request) { Map<String,String> params = AlipaySignature.parseParams(request); boolean verifyResult = alipayClient.verify(params); if(verifyResult && trade_status.equals("TRADE_SUCCESS")) { orderService.updateStatus(params.get("out_trade_no"),"已支付"); } } ``` 2. **性能优化方案** - 热点数据缓存:使用Redis缓存商品详情和库存信息 - 数据库分库分表:按年份拆分订单表(order_2023, order_2024) - 异步任务处理:通过RabbitMQ解耦库存扣减与订单创建 ### 四、测试与部署 1. **自动化测试策略** ```python # 使用JMeter进行压力测试 Thread Group: - 500并发用户 - Ramp-up: 60秒 - Loop: 10次 Sampler: - HTTP请求: /api/order/create - 参数: JSON格式商品数据 ``` 2. **部署架构** ``` ┌───────────────┐ ┌───────────────┐ │ Nginx │ ←─→ │ Tomcat集群 │ │ (负载均衡) │ │ (节点1,节点2) │ └───────┬───────┘ └───────┬───────┘ │ │ ↓ ↓ ┌───────────────┐ ┌───────────────┐ │ MySQL │ ←─→ │ Redis │ │ (从复制) │ │ (哨兵模式) │ └───────────────┘ └───────────────┘ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小梁说代码

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值