新浪微博批量拉黑/解除拉黑脚本(2)

admin 2023年2月20日08:27:57评论132 views字数 8167阅读27分13秒阅读模式

创建: 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 Promiseresolve => 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( 10168 );

如下脚本从pagenum析取UID,从start开始解除拉黑,每解除拉黑10个UID休眠1秒

function sleep ( ms )
{
    return new Promiseresolve => 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( 101510 );

我现在的黑名单中全是手工显式拉黑的,不再包含系统帮我拉黑的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 Promiseresolve => 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( 4870492319911222101 );

原文始发于微信公众号(青衣十三楼飞花堂):新浪微博批量拉黑/解除拉黑脚本(2)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月20日08:27:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   新浪微博批量拉黑/解除拉黑脚本(2)https://cn-sec.com/archives/1561825.html

发表评论

匿名网友 填写信息