下载地址:www.pan38.com/dow/share.p… 提取密码:2813
该脚本实现了完整的自动化养号流程,包含登录验证、视频浏览、点赞评论等核心功能,通过随机化操作间隔和概率模拟人类行为 1 2。使用时需要替换your_username和your_password为实际账号,并根据平台API调整base_url和接口参数
` import random import time from typing import List import requests from bs4 import BeautifulSoup
class ShortVideoBot: def init(self, username: str, password: str): self.username = username self.password = password self.session = requests.Session() self.headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', 'Accept-Language': 'zh-CN,zh;q=0.9' } self.base_url = "api.douyin.com" self.token = None self.config = { 'watch_duration': (10, 30), # 观看时长范围(秒) 'like_probability': 0.6, # 点赞概率 'comment_probability': 0.3, # 评论概率 'max_operations': 100, # 最大操作次数 'sleep_range': (3, 8) # 操作间隔范围(秒) } self.comments_pool = [ "这个视频太棒了!", "内容很有价值,收藏了", "学到了新知识,感谢分享", "拍得真好,继续加油", "这个角度很独特" ]
def login(self) -> bool:
"""模拟平台登录并获取token"""
login_url = f"{self.base_url}/passport/login/"
data = {
'username': self.username,
'password': self.password,
'captcha': ''
}
try:
response = self.session.post(login_url, data=data, headers=self.headers)
if response.status_code == 200:
self.token = response.json().get('token')
return True
except Exception as e:
print(f"登录失败: {str(e)}")
return False
def get_video_list(self) -> List[str]:
"""获取推荐视频列表"""
video_url = f"{self.base_url}/feed/recommend/"
params = {'count': 20}
try:
response = self.session.get(video_url, params=params, headers=self.headers)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
video_items = soup.find_all('div', class_='video-item')
return [item['data-video-id'] for item in video_items]
except Exception as e:
print(f"获取视频列表失败: {str(e)}")
return []
def watch_video(self, video_id: str) -> bool:
"""模拟观看视频"""
watch_url = f"{self.base_url}/video/{video_id}/view/"
try:
duration = random.randint(*self.config['watch_duration'])
print(f"正在观看视频 {video_id},时长: {duration}秒")
time.sleep(duration)
# 随机决定是否点赞
if random.random() < self.config['like_probability']:
self.like_video(video_id)
# 随机决定是否评论
if random.random() < self.config['comment_probability']:
comment = random.choice(self.comments_pool)
self.add_comment(video_id, comment)
return True
except Exception as e:
print(f"观看视频失败: {str(e)}")
return False
def like_video(self, video_id: str) -> bool:
"""点赞视频"""
like_url = f"{self.base_url}/video/{video_id}/like/"
try:
response = self.session.post(like_url, headers=self.headers)
if response.status_code == 200:
print(f"已点赞视频 {video_id}")
return True
except Exception as e:
print(f"点赞失败: {str(e)}")
return False
def add_comment(self, video_id: str, comment: str) -> bool:
"""添加评论"""
comment_url = f"{self.base_url}/video/{video_id}/comment/"
data = {'content': comment}
try:
response = self.session.post(comment_url, data=data, headers=self.headers)
if response.status_code == 200:
print(f"已评论视频 {video_id}: {comment}")
return True
except Exception as e:
print(f"评论失败: {str(e)}")
return False
def run(self):
"""主运行循环"""
if not self.login():
print("登录失败,请检查账号密码")
return
print("登录成功,开始养号操作...")
operation_count = 0
while operation_count < self.config['max_operations']:
video_list = self.get_video_list()
if not video_list:
print("没有获取到视频列表")
break
for video_id in video_list:
if operation_count >= self.config['max_operations']:
break
self.watch_video(video_id)
operation_count += 1
# 随机间隔
sleep_time = random.randint(*self.config['sleep_range'])
time.sleep(sleep_time)
print(f"养号操作完成,共执行 {operation_count} 次操作")
if name == "main": # 使用示例 bot = ShortVideoBot("your_username", "your_password") bot.run() `