本文目录导读:

- 方案一:网页自动化脚本(Python + Selenium)
- 方案二:GitHub Actions 定时更换
- 方案三:本地脚本 + Windows任务计划程序
- 方案四:Telegram机器人定时换头像
- 注意事项
- 浏览器扩展方案(如需要)
网页自动化脚本(Python + Selenium)
适用于自动更换社交平台(如微博、知乎等)头像。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import os
# 初始化浏览器
driver = webdriver.Chrome()
def change_avatar(website, login_info, avatar_path):
"""通用头像更换函数"""
driver.get(website)
# 登录(以微博为例)
time.sleep(3)
driver.find_element(By.ID, 'loginname').send_keys(login_info['username'])
driver.find_element(By.ID, 'password').send_keys(login_info['password'])
driver.find_element(By.CLASS_NAME, 'btn_submit').click()
# 进入个人设置页面
time.sleep(5)
driver.find_element(By.LINK_TEXT, '账号设置').click()
# 点击更换头像按钮
time.sleep(3)
driver.find_element(By.CSS_SELECTOR, '.change-avatar-btn').click()
# 上传新头像文件
upload_input = driver.find_element(By.CSS_SELECTOR, 'input[type="file"]')
upload_input.send_keys(avatar_path)
# 确认上传
time.sleep(3)
driver.find_element(By.CSS_SELECTOR, '.save-avatar-btn').click()
print(f"头像已更换为: {os.path.basename(avatar_path)}")
time.sleep(5)
# 批量更换示例
avatars = ['/path/avatar1.jpg', '/path/avatar2.jpg', '/path/avatar3.jpg']
for avatar in avatars:
change_avatar(
website='https://weibo.com',
login_info={'username': 'your_username', 'password': 'your_password'},
avatar_path=avatar
)
time.sleep(60) # 避免频繁操作触发风控
driver.quit()
GitHub Actions 定时更换
适用于GitHub个人资料头像自动更新
创建Python脚本 update_avatar.py
import requests
import base64
import os
def update_github_avatar(token, image_path):
headers = {
'Authorization': f'token {token}',
'Accept': 'application/vnd.github.v3+json'
}
# 获取当前用户信息
user_resp = requests.get('https://api.github.com/user', headers=headers)
user = user_resp.json()
# 读取并编码图片
with open(image_path, 'rb') as f:
image_data = base64.b64encode(f.read()).decode()
# 更新头像(GitHub需要先上传到临时位置)
upload_url = 'https://api.github.com/user/emails'
# 实际头像更新需要通过 https://github.com/settings/avatar 手动或使用桌面客户端
print(f"用户: {user['login']},准备更新头像")
# 示例:随机选择一张本地图片
import glob
import random
avatars = glob.glob('./avatars/*.jpg')
chosen = random.choice(avatars)
update_github_avatar(
token=os.environ['GITHUB_TOKEN'],
image_path=chosen
)
创建GitHub Actions工作流 .github/workflows/update-avatar.yml
name: Update Avatar Daily
on:
schedule:
- cron: '0 0 * * *' # 每天UTC中午12点
workflow_dispatch: # 允许手动触发
jobs:
update-avatar:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install dependencies
run: pip install requests python-telegram-bot
- name: Run avatar update
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: python update_avatar.py
- name: Commit new avatar
run: |
git config --local user.name "GitHub Action"
git config --local user.email "action@github.com"
git add avatars/
git commit -m "更新头像 $(date +%Y-%m-%d)" || echo "无变化"
git push
本地脚本 + Windows任务计划程序
import os
import random
import shutil
from datetime import datetime
def rotate_avatars(avatar_dir, target_dir):
"""随机选择头像并复制为目标文件"""
avatars = [f for f in os.listdir(avatar_dir) if f.lower().endswith(('.jpg', '.png'))]
if not avatars:
print("没有找到头像文件")
return
# 随机选择一张
chosen = random.choice(avatars)
source = os.path.join(avatar_dir, chosen)
target = os.path.join(target_dir, 'avatar.jpg')
# 替换目标图片
shutil.copy2(source, target)
print(f"[{datetime.now()}] 头像更新为: {chosen}")
# 调用示例
rotate_avatars(
avatar_dir='D:\\workspace\\avatars', # 头像库目录
target_dir='C:\\Users\\Public\\pictures' # 目标目录
)
Telegram机器人定时换头像
from telegram.ext import Updater, CommandHandler
import os
import glob
import random
class AvatarBot:
def __init__(self, token):
self.updater = Updater(token, use_context=True)
self.dp = self.updater.dispatcher
self.dp.add_handler(CommandHandler('change_avatar', self.change_avatar))
def change_avatar(self, update, context):
chat_id = update.effective_chat.id
# 检查消息回复的图片
if update.message.photo:
file_id = update.message.photo[-1].file_id
new_file = context.bot.get_file(file_id)
new_file.download('new_avatar.jpg')
# 调用Telegram Bot API设置头像
context.bot.set_chat_photo(chat_id=chat_id, photo=open('new_avatar.jpg', 'rb'))
update.message.reply_text('头像已更新!')
else:
# 从本地随机选择
avatars = glob.glob('avatars/*.jpg')
if avatars:
chosen = random.choice(avatars)
context.bot.set_chat_photo(chat_id=chat_id, photo=open(chosen, 'rb'))
update.message.reply_text(f'头像已更换为: {os.path.basename(chosen)}')
else:
update.message.reply_text('没有可用的头像文件')
注意事项
| 平台 | 注意事项 |
|---|---|
| 微信/QQ | 官方API限制严格,建议用辅助软件或手动操作 |
| 社交平台 | 频率限制(通常1小时/次),需设置随机延迟 |
| GitHub | 无官方API直接改头像,需模拟点击或桌面客户端 |
| 公司系统 | 建议先获得管理员授权再自动化 |
浏览器扩展方案(如需要)
// 油猴脚本示例 - 每天定时换头像
(function() {
const avatars = [
'https://example.com/avatar1.jpg',
'https://example.com/avatar2.jpg',
'https://example.com/avatar3.jpg'
];
setInterval(() => {
const randomAvatar = avatars[Math.floor(Math.random() * avatars.length)];
const avatarImg = document.querySelector('.user-avatar');
if (avatarImg) {
avatarImg.src = randomAvatar;
console.log('头像已更换:', new Date().toLocaleTimeString());
}
}, 3600000); // 每小时更换
})();
选择适合你的平台和应用场景的方案即可,自动化操作时注意遵守平台的服务条款,避免被封号。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播