微信朋友圈自動點贊

我一直都不太喜歡給別人點贊棚点,某一年(貌似是17年)微信出了一次朋友圈年報,那一整年我就點出去了幾個贊县踢,要知道當時我微信好友應該有300+瘸彤。我覺得這是我不喜歡參與社交活動在網(wǎng)絡世界的一種體現(xiàn)吧。不給別人點贊也沒啥壞處徊哑,但你不評不贊袜刷,難免會讓你和好友之間有些疏遠,給別人點贊吧我又嫌麻煩莺丑,于是一直想著做個自動點贊的東西著蟹,今天基本實現(xiàn)了墩蔓,雖然諸多不完整和諸多限制,但還是決定分享出來萧豆,主要是我覺得還挺好玩的奸披。

Autojs

先來介紹下Autojs,看github id貌似是個95后涮雷,真是年輕有為了阵面。我這個朋友圈自動點贊就是基于Autojs開發(fā)的,Autojs我的理解就是在Android用來操控手機的平臺洪鸭,它提供了很多Android 系統(tǒng)API可以供你用Js調(diào)用样刷,就是依賴Autojs這些Api我才能實現(xiàn)朋友圈自動點贊,這里我只用到了很少幾個Api卿嘲,其實還有好多很強大的Api可以參考下文檔颂斜。因為Autojs只在Android平臺可以用,所以意味著我的自動點贊也在Android手機用拾枣。

思路

在我知道Autojs并大概翻看了它的Api文檔之后沃疮,就差不多知道這東西能實現(xiàn)了。首先我我們來分析下如果人想給所有的朋友圈點贊會怎么做梅肤,為了直觀我直接上流程圖司蔬。


  看起來很簡單,如果你想給你所有的朋友圈都點上贊姨蝴,定時比如每隔一小時執(zhí)行下上面這個流程就可以了俊啼。 但是如何用程序自動執(zhí)行,我在調(diào)試時遇到到了很多的問題左医,比如以下幾個問題授帕。
  問題1:在第一步中,雖然可以Autojs可以直接打開某個App浮梢,也可以模擬點擊跛十,而且朋友圈入口在微信主界面的位置很固定,但是你每次打開微信并不一定停留在主界面帮跸酢=嬗场!
  問題2:你如何定位點贊/評論按鈕远豺?
  問題3:你如何判定一條朋友圈是否已經(jīng)被點贊過了奈偏?
  問題4:你每次滑動要滑多少?
  針對這些問題來看看我的解決方案躯护。

實現(xiàn)

啟動微信后可能微信停留在上次使用后的頁面惊来,沒有朋友圈入口,所以我們得先返回朋友圈主界面棺滞。這時候我們只需要連續(xù)點左上角的返回鍵唁盏,點按多次后一定返回微信主界面内狸。     
  ![在這里插入圖片描述](https://img-blog.csdnimg.cn/20190310104505122.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly94aW5kb28uYmxvZy5jc2RuLm5ldA==,size_16,color_FFFFFF,t_70 =300x)

進入朋友圈后可以適當將屏幕上滑一部分厘擂,移開自己的封面昆淡,讓第一條朋友圈的點贊/評論按鈕一定能露出來,就像這樣(為了不泄露我朋友圈的隱私刽严,恰好有條廣告做示例)昂灵。
  ![在這里插入圖片描述](https://img-blog.csdnimg.cn/20190310095104335.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly94aW5kb28uYmxvZy5jc2RuLm5ldA==,size_16,color_FFFFFF,t_70 =300x)
  接下來就是找點贊/評論按鈕的位置了,Autojs提供了截屏并獲取圖片中某個點ARGB值的Api舞萄,利用這兩個Api眨补,我們就可以很輕易定位到按鈕的位置了。
  ![在這里插入圖片描述](https://img-blog.csdnimg.cn/20190310095629592.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly94aW5kb28uYmxvZy5jc2RuLm5ldA==,size_16,color_FFFFFF,t_70 =300x)
  就拿評論點贊按鈕的第一個點做定位倒脓,上圖中的定位點撑螺,其X坐標是991,Y坐標需要掃描崎弃,定位依據(jù)是該點的ARGB顏色值是-11048043甘晤,這個值是我調(diào)試好久才抓出來的。 接下來點擊這個點的坐標就可以調(diào)出點贊和評論了饲做。
  接下來就是如何區(qū)分出一條朋友圈是否已經(jīng)被點過贊了线婚。
![在這里插入圖片描述](https://img-blog.csdnimg.cn/20190310100814287.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly94aW5kb28uYmxvZy5jc2RuLm5ldA==,size_16,color_FFFFFF,t_70 =600x)
  我直接說吧,點贊后這個愛心的位置會左移盆均,只要判斷X坐標是465那個位置的像素點是否是白色就能區(qū)分出是否點過贊塞弊。 還有個關于向上滑動多少的問題,我們只需要互動使上一個點過贊的朋友圈恰好不顯示就行了泪姨∮窝兀 
  考慮到所有的細節(jié)后,代碼流程圖就這這樣了肮砾,是不是比人工點贊復雜多了诀黍。  
  


  圖里有個循環(huán)上文沒說到唇敞,因為有些特殊情況會導致點贊失敗蔗草,明明還有好多沒點贊就退出咒彤,所以我加了個重試機制疆柔,只有連續(xù)三次點贊失敗才退出。

代碼

源代碼我放在github.com/xindoo/autojs镶柱,會持續(xù)更新旷档。這里我也貼一份出來。

function enterWechatMoment() {
    app.launch("com.tencent.mm");
    //確保返回到微信主界面
    sleep(200);
    click(692,2073);

    // 連續(xù)按多次返回歇拆,確毙回到網(wǎng)協(xié)主界面 
    for (var i = 0; i < 5; i++) {
        click(50,140);
        sleep(100);
    }

    sleep(50);
    // 點微信 發(fā)現(xiàn)
    click(692,2073);
    sleep(50);

    // 點朋友圈入口
    click(500,300);
    sleep(1000);
}

function registEvent() {
    //啟用按鍵監(jiān)聽
    events.observeKey();
    //監(jiān)聽音量上鍵按下
    events.onKeyDown("volume_down", function(event){
        toast("腳本手動退出");
        exit();
    });
}

function prepare() {
    // 雙擊頂部更新朋友圈  
    click(500, 150);
    sleep(100);
    click(500, 150); 

    // 等2s 微信朋友圈更新完成 
    sleep(3000);

    // 向下滑至第一條朋友圈 
    swipe(550, 1200, 550, 200, 200);

    if(!requestScreenCapture()){
        tLog("請求截圖失敗");
        exit();
    }
    var image = captureScreen();
    sleep(2000);
}

function clickLike() {
    sleep(1000);
    var image = captureScreen();
    var arrs = [-1];
    var x = 991;
    var buttonColor = -11048043;

    // 函數(shù)返回此次點贊是否成功范咨,如果沒找到點贊按鈕或者已點贊返回false,做法是否繼續(xù)的判斷
    var isSucceed = true;

    // 掃描出點贊評論按鈕的位置厂庇,兩個點的ARGB顏色為-11048043 
    for(var y = 250; y < 1920; y++) {
        var color = images.pixel(image, x, y);

        // 白色 背景色渠啊,跳過
        if (color == -1) {
            continue;
        }
        if (color == buttonColor) {
            // 按下評論點贊按鈕  
            click(x, y)
            sleep(1000);

            // 重新截圖,找到點贊心形按鈕的位置
            var clickimage = captureScreen();

            // 如果這個點的顏色是-1权旷,表示這條朋友圈已經(jīng)點過贊了替蛉,返回點贊失敗false
            if (images.pixel(clickimage, 465, y) != -1) {
                // 點贊
                click(523, y);
            } else {
                isSucceed = false;
            }
            sleep(2000);
            // 往下滑動到下一條朋友圈的位置  
            swipe(550, y+200, 550, 150, 200);
            return isSucceed;
        }
    }

    // 如果執(zhí)行到這,可能是某條朋友圈評論太多拄氯,一屏里沒有點贊評論按鈕躲查,就滑動大半屏再試一次
    swipe(550, 1600, 550, 150, 200);
    return false;
}

//程序主入口
function start(){
    //注冊音量鍵上被按下時退出腳本的執(zhí)行  
    registEvent();

    // 確保進入微信朋友圈
    enterWechatMoment();
    prepare();
    
    var retry = 3;
    var cnt = 0;
    // 連續(xù)失敗三次就退出  
    while(retry > 0) {
        // 如果是false,表示已經(jīng)點過贊了 
        if (clickLike() == false) {
            retry--;
        } else {
            retry = 3;
            cnt++;
        }
    }
    
    toast("本次總共點贊" + cnt + "條");
    // 返回微信主界面
    click(50,140);
    exit();
}
start();

問題

雖然大體上實現(xiàn)了朋友圈點贊的自動化译柏,但其實還是存在很多問題镣煮,有些是可以很簡單解決的,但是我沒啥動力解決鄙麦。也有些是我沒想好怎么解決的典唇,也有些是這種點贊方式下無解的。

  1. 上文所說黔衡,只限Android蚓聘,部分同學是iOS就沒啥辦法了,我并不清楚iOS是否有類似Api盟劫。
  2. 因為我手頭只有一臺1080*2160分辨率的手機夜牡,所以實現(xiàn)是以此為標準的,其他分辨率的手機并不一定能用侣签。
  3. 非全自動化塘装,目前需要手動觸發(fā),也需要手動賦予截屏權限(額外點幾下)影所,應該是可以設置定時執(zhí)行的蹦肴,我沒再繼續(xù)嘗試。
  4. 點贊過程中不能干擾猴娩,也不能暫停(但可中斷)阴幌,建議點贊過程中不要使用手機(點贊操作和用戶操作會相互干擾),實在要用就按音量上鍵中斷點贊卷中。
  5. 最重要一條矛双,不是所有的朋友圈都能點贊的,不是所有的人都能忍受你給他每條朋友圈都點贊的蟆豫。舉個例子议忽,有天我看見朋友圈有人發(fā)他親人去世………

微信朋友圈自動點贊的實現(xiàn)大致都是這樣了,有問題可以在下面留言或者在github.com/xindoo/autojs提issue十减,github上代碼還是方便更新的栈幸。 下一個類似的腳本我打算做個 支付寶自動偷能量 雖然網(wǎng)上已經(jīng)有類似的實現(xiàn)愤估。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市速址,隨后出現(xiàn)的幾起案子玩焰,更是在濱河造成了極大的恐慌,老刑警劉巖芍锚,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件震捣,死亡現(xiàn)場離奇詭異,居然都是意外死亡闹炉,警方通過查閱死者的電腦和手機蒿赢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渣触,“玉大人羡棵,你說我怎么就攤上這事⌒嶙辏” “怎么了皂冰?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長养篓。 經(jīng)常有香客問我秃流,道長,這世上最難降的妖魔是什么柳弄? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任舶胀,我火速辦了婚禮,結果婚禮上碧注,老公的妹妹穿的比我還像新娘嚣伐。我一直安慰自己,他們只是感情好萍丐,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布轩端。 她就那樣靜靜地躺著,像睡著了一般逝变。 火紅的嫁衣襯著肌膚如雪基茵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天壳影,我揣著相機與錄音拱层,去河邊找鬼。 笑死态贤,一個胖子當著我的面吹牛舱呻,可吹牛的內(nèi)容都是我干的醋火。 我是一名探鬼主播悠汽,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼箱吕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了柿冲?” 一聲冷哼從身側響起茬高,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎假抄,沒想到半個月后怎栽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡宿饱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年熏瞄,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谬以。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡强饮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出为黎,到底是詐尸還是另有隱情邮丰,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布铭乾,位于F島的核電站剪廉,受9級特大地震影響,放射性物質發(fā)生泄漏炕檩。R本人自食惡果不足惜斗蒋,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望笛质。 院中可真熱鬧吹泡,春花似錦、人聲如沸经瓷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舆吮。三九已至揭朝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間色冀,已是汗流浹背潭袱。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锋恬,地道東北人屯换。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親彤悔。 傳聞我的和親對象是個殘疾皇子嘉抓,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容