RID Agents

https://github.com/RSAIntelShare/RID-Server

https://github.com/MITRE-RID-Agent/MITRE_RID_Agent

https://tools.ietf.org/html/rfc6545

import requests import time import random import pandas as pd from datetime import datetime from bs4 import BeautifulSoup # ================ 核心配置 ================ KEYWORD = "石楠花" # 搜索关键词 MAX_PAGES = 1 # 爬取页数(每页20条)建议从1开始测试 OUTPUT_FILE = f"B站_{KEYWORD}_视频数据_{datetime.now().strftime('%Y%m%d')}.xlsx" # 反爬配置 USER_AGENTS = [ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", "Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1", "Mozilla/5.0 (Linux; Android 12; SM-S908E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.41 Mobile Safari/537.36" ] # ================ 核心函数 ================ def get_random_headers(): """生成随机请求头""" return { "User-Agent": random.choice(USER_AGENTS), "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", "Referer": "https://search.bilibili.com/" } def convert_bilibili_number(num_str): """处理B站数字格式(万/亿转换)""" if isinstance(num_str, int): return num_str num_str = str(num_str).replace(',', '') if '万' in num_str: # 移除"万"字并乘以10000 return int(float(num_str.replace('万', '')) * 10000 if '亿' in num_str: # 移除"亿"字并乘以100000000 return int(float(num_str.replace('亿', '')) * 100000000 try: # 尝试转换为整数 return int(num_str) except: # 转换失败返回0 return 0 def get_bilibili_via_api(keyword, max_pages=3): """通过官方API获取数据(推荐方式)""" results = [] for page in range(1, max_pages + 1): try: url = "https://api.bilibili.com/x/web-interface/search/type" params = { "search_type": "video", "keyword": keyword, "page": page, "page_size": 20 } response = requests.get( url, params=params, headers=get_random_headers(), timeout=10 ) data = response.json() if data.get('code') != 0: print(f"API返回错误: {data.get('message')}") continue for video in data['data']['result']: # 确保所有字段都存在 video_data = { "平台": "B站", "视频ID": video.get('bvid', ''), "标题": video.get('title', ''), "播放量": convert_bilibili_number(video.get('play', 0)), "点赞量": convert_bilibili_number(video.get('like', 0)), "评论数": convert_bilibili_number(video.get('comment', 0)), "弹幕数": convert_bilibili_number(video.get('danmaku', 0)), "作者": video.get('author', ''), "时长": video.get('duration', ''), "发布时间": datetime.fromtimestamp(video.get('pubdate', 0)).strftime('%Y-%m-%d') if video.get('pubdate') else '', "采集时间": datetime.now().strftime('%Y-%m-%d %H:%M:%S') } results.append(video_data) print(f"已获取第{page}页数据,共{len(data['data']['result'])}条") # 控制请求频率 time.sleep(random.uniform(1.5, 3.0)) except Exception as e: print(f"第{page}页获取失败: {str(e)}") time.sleep(5) return results def save_to_excel(data, filename): """保存数据到Excel""" if not data: print("没有数据可保存") return df = pd.DataFrame(data) # 保存为Excel df.to_excel(filename, index=False) print(f"数据已保存至: {filename}") print(f"共{len(df)}条记录") # ================ 主执行程序 ================ if __name__ == "__main__": print(f"【B站视频数据采集开始】关键词: {KEYWORD}") start_time = time.time() try: # 使用API方式获取数据 video_data = get_bilibili_via_api(KEYWORD, MAX_PAGES) if video_data: save_to_excel(video_data, OUTPUT_FILE) else: print("未获取到有效数据") except Exception as e: print(f"程序异常终止: {str(e)}") print(f"任务完成! 耗时: {time.time() - start_time:.2f}秒") # 程序结束后暂停,方便查看结果 input("按Enter键退出...")
07-18
在车辆工程中,悬架系统的性能评估和优化一直是研究的热点。悬架不仅关乎车辆的乘坐舒适性,还直接影响到车辆的操控性和稳定性。为了深入理解悬架的动态行为,研究人员经常使用“二自由度悬架模型”来简化分析,并运用“传递函数”这一数学工具来描述悬架系统的动态特性。 二自由度悬架模型将复杂的车辆系统简化为两个独立的部分:车轮和车身。这种简化模型能够较准确地模拟出车辆在垂直方向上的运动行为,同时忽略了侧向和纵向的动态影响,这使得工程师能够更加专注于分析与优化与垂直动态相关的性能指标。 传递函数作为控制系统理论中的一种工具,能够描述系统输入和输出之间的关系。在悬架系统中,传递函数特别重要,因为它能够反映出路面不平度如何被悬架系统转化为车内乘员感受到的振动。通过传递函数,我们可以得到一个频率域上的表达式,从中分析出悬架系统的关键动态特性,如系统的振幅衰减特性和共振频率等。 在实际应用中,工程师通过使用MATLAB这类数学软件,建立双质量悬架的数学模型。模型中的参数包括车轮质量、车身质量、弹簧刚度以及阻尼系数等。通过编程求解,工程师可以得到悬架系统的传递函数,并据此绘制出传递函数曲线。这为评估悬架性能提供了一个直观的工具,使工程师能够了解悬架在不同频率激励下的响应情况。
05-15
### 关于RID的技术定义 RID 是一种用于唯一标识请求的字段,在许多系统中被用来追踪特定的操作记录或调试信息。它通常是一个全局唯一的字符串,由字母、数字以及特殊字符组成,旨在帮助开发者快速定位问题所在[^1]。 在微信平台报错信息中的 `rid` 字段代表的是 **Request ID**,即请求ID。当发生错误时,该字段可以作为向技术支持团队反馈的关键依据之一。通过提供完整的 Request ID,能够更高效地协助排查具体原因并找到解决办法[^1]。 ### 关于RID错误代码的理解 对于所提供的错误码 `{ "errcode":88000,"errmsg":"without comment privilege hint: [7oJ0533w689] rid: 630432cd-15944cf6-083e04fc" }` ,其中: - `"errcode":88000` 表明这是一个权限类别的错误,意味着当前账户可能缺乏执行某些操作所需的必要权限。 - `"errmsg"` 中提到的 “without comment privilege” 明确指出是因为缺少评论特权而导致失败的结果;而后面的提示部分则包含了进一步诊断所需要的辅助数据——如 `[7oJ0533w689]` 和具体的 `rid` 值 (例如这里的 `630432cd-15944cf6-083e04fc`) 来便于后续跟进处理过程。 需要注意的是,虽然此案例里显示出了关于评论功能方面的限制情况,但实际上不同的业务逻辑下可能会对应其他类型的限制条件或者异常状况。 ### RID 的使用场景分析 RID 不仅限于错误跟踪领域,在多个实际应用场景中有广泛的应用价值: #### 场景一:日志管理与监控 在分布式系统架构设计当中,每一个外部调用都会分配一个独立的 request id 。这样做的好处是可以贯穿整个服务链路的所有环节,并且方便运维人员查看某次请求经过哪些模块处理及其状态变化轨迹等重要细节信息[^1]。 ```python def log_request(request_id, message): print(f"[{request_id}] {message}") log_request('abc123', 'Processing user login') ``` #### 场景二:客户服务支持 当用户报告产品内的某个问题时,如果能附带相应的 request id,则有助于客服迅速锁定对应的会话记录或是后台数据库条目等内容,从而提升响应速度和服务质量水平。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值