创建: 2023-02-16 14:26
更新: 2023-02-19 16:30
目录:
☆ 背景介绍
☆ 批量清理黑名单中已被杀档的UID
☆ 获取自己的关注列表
☆ 获取指定微博的点赞列表
☆ 获取指定评论的点赞列表
1) 获取UID列表
2) 批量移除对自己的关注
☆ 背景介绍
PC端微博被强制新版,试了wvr6=0,没生效,TK说这种是某些账号被灰度了强制新版。新版实现有BUG,页面失去响应多次,各种刷新小故障。产品经理为了刷存在感,强改旧版,和市政拆了修、修了拆一样一样的。从如下入口访问PC版微博,清爽
https://m.weibo.cn/
但该入口交互性很低,我经常移除别人对我的关注,用前述URL不合适。最近简单看了看被强制使用的新版微博,做些笔记。
参看
本文是其后续。
☆ 批量清理黑名单中已被杀档的UID
新版微博的屏蔽名单里可以看到早些年系统帮你自动拉黑的那一类UID,还不少,主要是什么多少钱加多少粉的那种卖粉UID,大部分已被系统杀档,但仍出现在屏蔽名单中,不知占不占黑名单的配额,我猜是占的。心疼黑名单配额的,有洁癖的,可从黑名单中删除这些卖粉UID。但量大时手工删这些UID可费劲了,因为每删一个就要弹框告诉你该UID不存在,虽然也删掉了。程序员的话,得设法js批量删之。
新版微博在此显示黑名单
https://weibo.com/set/shield?type=user
https://weibo.com/ajax/setting/getFilteredUsers?page=1
查看前述第二个URL的返回数据,可知每页20个UID,递增page显示其他页,根据旧版脚本改写新版脚本。
如下脚本从闭区间[page_start,page_stop]析取UID,每解除拉黑10个UID休眠1秒
function sleep ( ms )
{
return new Promise( resolve => setTimeout( resolve, ms ) );
}
//
// 闭区间[page_start,page_stop]
//
async function unblock_a ( group, interval, page_start, page_stop )
{
var http_0 = new XMLHttpRequest();
var http_1 = new XMLHttpRequest();
var pagenum = page_start;
var count = 0;
while ( 1 )
{
var url = 'https://weibo.com/ajax/setting/getFilteredUsers?page=' + pagenum;
http_0.open( 'GET', url, false );
http_0.send( null );
if ( http_0.status === 200 )
{
var resp = JSON.parse( http_0.responseText );
// console.log( resp );
for ( var c = 0; c < resp.card_group.length; c++ )
{
// console.log( resp.card_group[c].scheme );
var temp = resp.card_group[c].scheme.match( /(?:uid=)(d+)(?:)/g )[0];
// console.log( temp );
if ( temp )
{
var uid = temp.match( /(?:uid=)(d+)/ )[1];
// console.log( uid );
var rnd = Math.floor( Math.random() * 1e4 + 1.5788995e12 );
http_1.open( 'POST', 'https://weibo.com/aj/f/delblack?ajwvr=6', false );
http_1.setRequestHeader( 'Content-type', 'application/x-www-form-urlencoded' );
http_1.send( 'uid=' + uid + '&objectid=&f=1&__rnd' + rnd );
count++;
if ( count % group === 0 )
{
console.log( uid );
await sleep( interval * 1000 );
count = 0;
}
}
}
if ( pagenum > page_stop )
{
break;
}
pagenum++;
}
}
}
//
// https://weibo.com/ajax/setting/getFilteredUsers?page=6
// https://weibo.com/ajax/setting/getFilteredUsers?page=8
//
unblock_a( 10, 1, 6, 8 );
如下脚本从pagenum析取UID,从start开始解除拉黑,每解除拉黑10个UID休眠1秒
function sleep ( ms )
{
return new Promise( resolve => setTimeout( resolve, ms ) );
}
async function unblock_b ( group, interval, pagenum, start )
{
var http_0 = new XMLHttpRequest();
var http_1 = new XMLHttpRequest();
var count = 0;
var url = 'https://weibo.com/ajax/setting/getFilteredUsers?page=' + pagenum;
http_0.open( 'GET', url, false );
http_0.send( null );
if ( http_0.status === 200 )
{
var resp = JSON.parse( http_0.responseText );
// console.log( resp );
for ( var c = start; c < resp.card_group.length; c++ )
{
// console.log( resp.card_group[c].scheme );
var temp = resp.card_group[c].scheme.match( /(?:uid=)(d+)(?:)/g )[0];
// console.log( temp );
if ( temp )
{
var uid = temp.match( /(?:uid=)(d+)/ )[1];
// console.log( uid );
var rnd = Math.floor( Math.random() * 1e4 + 1.5788995e12 );
http_1.open( 'POST', 'https://weibo.com/aj/f/delblack?ajwvr=6', false );
http_1.setRequestHeader( 'Content-type', 'application/x-www-form-urlencoded' );
http_1.send( 'uid=' + uid + '&objectid=&f=1&__rnd' + rnd );
count++;
if ( count % group === 0 )
{
console.log( uid );
await sleep( interval * 1000 );
count = 0;
}
}
}
}
}
//
// https://weibo.com/ajax/setting/getFilteredUsers?page=5
//
unblock_b( 10, 1, 5, 10 );
我现在的黑名单中全是手工显式拉黑的,不再包含系统帮我拉黑的UID。unblock_a、unblock_b可以优化合并,无此刚需,仅为演示。
☆ 获取自己的关注列表
新版微博在此查看自己的关注列表,每页50个UID,脚本留成作业吧
https://weibo.com/ajax/profile/followContent?sortType=all
https://weibo.com/ajax/profile/followContent?page=2
https://weibo.com/ajax/profile/followContent?page=3
☆ 获取指定微博的点赞列表
以此为例
https://weibo.com/1273725432/MtywWBgs2
用F12抓到上述微博的点赞列表
https://weibo.com/ajax/statuses/likeShow?id=4870442508881378&attitude_type=0&attitude_enable=1&page=1
每页最多20个UID,递增page显示其他页。有时系统会吃掉一些UID,比如上例,响应内容指明total_number等于21,但实际只能取到12个UID,剩下9个不知为何消失了,原因不明。
用F12抓点赞、取消点赞,看到
curl 'https://weibo.com/ajax/statuses/setLike'
--data-raw '{"id":"4870442508881378"}'
curl 'https://weibo.com/ajax/statuses/cancelLike'
--data-raw '{"id":"4870442508881378"}'
4870442508881378可以唯一标定前述微博,可以写js获取它的点赞列表。
☆ 获取指定评论的点赞列表
1) 获取UID列表
以此为例
https://weibo.com/1273725432/MtywWBgs2
下方有一条我自己的评论,有2个点赞,用F12抓点赞、取消点赞
curl 'https://weibo.com/ajax/statuses/updateLike'
--data-raw '{"object_id":"4870442782033445","object_type":"comment"}'
curl 'https://weibo.com/ajax/statuses/destroyLike'
--data-raw '{"object_id":"4870442782033445","object_type":"comment"}'
对于新版微博,没有GUI操作获取指定评论的点赞列表,UID(5036455239)说接口未变,
于是可以盲套旧版微博的接口
https://weibo.com/aj/like/object/big?ajwvr=6&page=1&object_id=4870442782033445&object_type=comment
虽然Request未变,但Response有变,需要修改脚本中的正则匹配。如下脚本获取指定评论的点赞列表,输出的第一项就是第一个点赞的UID
var cid = 4870442782033445;
var http = new XMLHttpRequest();
var uidlist = [];
var pagenum = 1;
while ( 1 )
{
var url = 'https://weibo.com/aj/like/object/big?ajwvr=6&page=' + pagenum + '&object_id=' + cid + '&object_type=comment';
http.open( 'GET', url, false );
http.send( null );
if ( http.status === 200 )
{
var resp = JSON.parse( http.responseText );
var temp = resp.data.html.match( /(?:li uid=")(d+)(?:")/g );
if ( temp )
{
for ( var i = 0; i < temp.length; i++ )
{
uidlist.unshift( temp[i].match( /d+/ )[0] );
}
}
if ( resp.data.page.pagenum == resp.data.page.totalpage )
{
break;
}
}
pagenum++;
}
console.log( uidlist );
2) 批量移除对自己的关注
如下脚本批量移除某条评论的所有点赞UID,每移除10个UID休眠1秒
function sleep ( ms )
{
return new Promise( resolve => setTimeout( resolve, ms ) );
}
async function remove ( cid, group, interval )
{
var http_0 = new XMLHttpRequest();
var http_1 = new XMLHttpRequest();
var pagenum = 1;
var count = 0;
while ( 1 )
{
var url = 'https://weibo.com/aj/like/object/big?ajwvr=6&page=' + pagenum + '&object_id=' + cid + '&object_type=comment';
http_0.open( 'GET', url, false );
http_0.send( null );
if ( http_0.status === 200 )
{
var resp = JSON.parse( http_0.responseText );
var temp = resp.data.html.match( /(?:li uid=")(d+)(?:")/g );
if ( temp )
{
for ( var i = 0; i < temp.length; i++ )
{
var uid = temp[i].match( /d+/i )[0]
console.log( uid );
var rnd = Math.floor( Math.random() * 1e4 + 1.5788995e12 );
http_1.open( 'POST', 'https://weibo.com/aj/f/remove?ajwvr=6', false );
http_1.setRequestHeader( 'Content-type', 'application/x-www-form-urlencoded' );
http_1.send( 'uid=' + uid + '&f=1&__rnd' + rnd );
count++;
if ( count % group === 0 )
{
console.log( uid );
await sleep( interval * 1000 );
count = 0;
}
}
}
if ( resp.data.page.pagenum == resp.data.page.totalpage )
{
break;
}
}
pagenum++;
}
}
remove( 4870492319911222, 10, 1 );
原文始发于微信公众号(青衣十三楼飞花堂):新浪微博批量拉黑/解除拉黑脚本(2)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论