微博关注迁移脚本
大约 3 分钟
微博关注迁移脚本
最近我的微博账号又被封号了,这已经是我第二个微博账号被封号了。然后我又搞了一个微博账号。没办法,虽然说微博有各种各样的不是,但目前国内也确实没有一个更好的 平台来发声,尤其是当你在受到一些不公平的待遇的时候。
言归正传,在我搞到新的微博账号之后,我就需要把之前已经被封号的账号的关注者迁移到新的账号上,微博官方没有这种工具,所以我自己整了几个小脚本来帮助我做这个事情, 否则我原来的微博关注了三百多号人,如果靠自己手工来干的话,太难为人了,所以需要写脚本来完成这个事情。而微博封号之后,这个账号你还是可以登录的,还是可以看到你的关注人的,这一点还是很不错的,给我们实现这个功能提供了可能性。
下面贴一下使用脚本以及对应的使用方法。
获取原账号的关注者信息
- 前往微博 H5 版首页 (https://m.weibo.cn)
- 登录被微博封号的账号
- 右键 “检查” 打开开发者工具(或者F12),复制下面的代码,粘贴到控制台,等待结果并复制:
(() => {
let uid = config.uid, follows = []
const pageQuery = (page = 1) => {
let xhr = new XMLHttpRequest()
xhr.onreadystatechange = () => {
if(xhr.readyState == 4 && xhr.status == 200){
let data = JSON.parse(xhr.responseText).data
if(data.msg == '这里还没有内容') return console.log(JSON.stringify(follows))
data.cards.forEach(card => follows.push(card.user.id))
pageQuery(page + 1)
}
}
xhr.open('GET', `/api/container/getSecond?luicode=10000011&lfid=100505${uid}&uid=${uid}&containerid=100505${uid}_-_FOLLOWERS&page=${page}`)
xhr.send()
}
pageQuery()
})()
这里接口api获取的 json 格式如下
{
card_type: 10,
user: {
id: 0,
screen_name: "xxxxxxxxxx",
profile_image_url: "https://tvax4.sinaimg.cn/crop.0.0.664.664.180/5487abcdly8g0clh7uhdkj20ig0ihjsr.jpg?KID=imgbed,tva&Expires=1571513714&ssig=xHcSHWmQ4a",
profile_url: "https://m.weibo.cn/u/xxxxxxxxxx?uid=v&luicode=10000012&lfid=1005052118906250_-_FOLLOWERS",
statuses_count: 7293,
verified: true,
verified_type: 0,
verified_type_ext: 1,
verified_reason: "xxxx",
close_blue_v: false,
description: "xxxxx",
gender: "m",
mbtype: 12,
urank: 39,
mbrank: 6,
follow_me: false,
following: true,
followers_count: 1125699,
follow_count: 489,
cover_image_phone: "https://tva1.sinaimg.cn/crop.0.0.640.640.640/xxxxxx.jpg",
avatar_hd: "https://wx4.sinaimg.cn/orj480/xxxxxx.jpg",
like: false,
like_me: false,
desc1: null,
desc2: null
},
scheme: "https://m.weibo.cn/u/1418177485?uid=1418177485&luicode=xxxxxxx",
desc1: "xxxxxx",
desc2: ""
}
转移关注者
- 前往 PC 版首页 (www.weibo.com)
- 退出被封号的账号,登录新的微博账号
- 右键 “检查” 打开开发者工具,复制下面的代码并填入上一步得到的列表,粘贴到控制台,等待全部关注完成:
(list => {
let index = -1, length = list.length
const follow = uid => {
let xhr = new XMLHttpRequest()
xhr.onreadystatechange = () => {
if(xhr.readyState == 4 && xhr.status == 200){
let data = JSON.parse(xhr.responseText)
if(data.code == 100000) {
console.log(`${index + 1}/${length}`, uid, data.data.fnick, '关注成功')
}else if (data.code == 20062){
console.log(`${index + 1}/${length}`, uid, `${data.msg}`)
}
else if (data.code == 100001) {
console.log(`${index + 1}/${length}`, uid, `${data.msg}`)
} else {
console.log(`${index + 1}/${length}`, uid, `${data.code} - ${data.msg}`)
}
}
}
xhr.open('POST', `/aj/f/followed?ajwvr=6&__rnd=${Date.now()}`)
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
xhr.send(`uid=${uid}&objectid=&f=1&extra=&refer_sort=&refer_flag=1005050001_&location=page_100505_home&oid=${uid}&wforce=1&nogroup=false&fnick=&refer_lflag=&refer_from=profile_headerv6&_t=0`)
}
let scheduled = setInterval(() => {
index += 1
follow(list[index])
}, 5000)
setTimeout(() => {
clearTimeout(scheduled)
}, 5100 * length)
})(/*上一步的结果*/)
备注:
- 每天一个id最多关注200人,超过会关注失败。
- 频率不能太频繁,否则微博会返回414状态码
- 上面的脚本是对参考资料的脚本微调之后的,优化了调度时间,以及增加了控制台输出,避免被卡主后,你还在傻傻的死等。
- 调整了调度时间,之前的2s调度间隔容易触发微博414限流状态码。
- 针对20062(需要验证)状态码进行处理。当出现这个状态码的时候,需要大家自己随便找一个关注者操作关注一下,然后完成微博的弹窗验证码之后,在使用脚本继续进行。
- 增加了其他状态码的控制台提示信息
- 失败后,多跑几次就行,反正“关注”这个操作是幂等的。
参考资料
版权申明
本站点所有内容,版权均归https://wenchao.ren所有,除非明确授权,否则禁止一切形式的转载协议
打赏
