摘要:本以為花一兩個小時就能搞定這個微博自動轉發的腳本,結果中途不停的踩坑折騰了大半天。還好早早的被李笑來老師拉黑。填坑過程打開瀏覽器中,先登錄自己的微博,再進入李笑來老師的微博首頁。然后手動轉發一次微博,獲取到轉發時所產生的請求。
故事的背景如下圖,李笑來 老師于10月19日在 知乎Live 開設 一小時建立終生受用的閱讀操作系統 的講座,他老人家看到大家伙報名踴躍,便在微博上發起了一個 猜數量贏取iPhone7 的活動。
因為該活動注明了「不限猜的次數」,我便用 JavaScript 寫一個自動轉發的腳本,用機器代替手工轉發,結果轉發不到200次就被 李笑來 老師拉黑了,實在掃興。與其獨自郁悶,不如把技術細節分享給大家,祝大家能早日贏得 iPhone7。我的微博地址是:http://weibo.com/stone0090,歡迎大家來圍觀。
本以為花一兩個小時就能搞定這個微博自動轉發的腳本,結果中途不停的踩坑折騰了大半天。還好早早的被 李笑來 老師拉黑。不然用 .NET 重寫工具,再接入 打碼兔,還得再花我好幾個小時。好不容易國慶長假休息一下,還不是想給媳婦換個 iPhone7,我就能用她的 iPhone6s,要不然真心不想花太多時間搗鼓這個。廢話不多說了,進入正題:
前期準備JavaScript:如果不會 JavaScript,建議先學完 JavaScript 闖關記,再繼續看本文。
Chrome:開發調試 JavaScript 必備神器。
微博會員:據網上流言,普通用戶如果轉發過多會被封號,而會員則不會。
填坑過程打開 Chrome 瀏覽器中,先登錄自己的微博,再進入李笑來老師的微博首頁 http://weibo.com/bylixiaolai 。
打開 Chrome 開發者工具(Mac 快捷鍵 option + comand + j,Window 快捷鍵 ctrl + shift + i),切換 tab 到 NetWork,并點擊 clear,清除初始化時所加載的數據。
然后手動轉發一次微博,獲取到轉發時所產生的請求。
利用上圖紅框中的關鍵數據,使用 JavaScript 模擬發送轉發請求,具體代碼如下。
// 轉發微博,并評論 function forwardWeibo(content, retcode) { var formData = new FormData(); formData.append("pic_src", ""); formData.append("pic_id", ""); formData.append("appkey", ""); formData.append("mid", "4024988475919525"); formData.append("style_type", "1"); formData.append("mark", ""); formData.append("reason", content); formData.append("location", "page_100505_home"); formData.append("pdetail", "1005051576218000"); formData.append("module", ""); formData.append("page_module_id", ""); formData.append("refer_sort", ""); formData.append("is_comment_base", "1"); formData.append("rank", "0"); formData.append("rankid", ""); formData.append("_t", "0"); formData.append("retcode", retcode || ""); var xhr = new XMLHttpRequest(); xhr.timeout = 3000; xhr.responseType = "text"; xhr.open("POST", "http://weibo.com/aj/v6/mblog/forward?ajwvr=6&domain=100505&__rnd=" + new Date().getTime(), true); xhr.onload = function(e) { if (this.status == 200 || this.status == 304) { var data = JSON.parse(this.responseText); if (data.code == "100000") { // 轉發微博成功 console.log(content); } else if (data.code == "100027") { // 轉發微博失敗,需要回答圖片驗證碼的問題 console.log(data); } else { // 轉發微博失敗,其他原因 console.log(data); } } }; xhr.send(formData); } //forwardWeibo("轉發內容"); //forwardWeibo("轉發內容",verified("答案")); // 每5秒轉發一次 var count = 35000; setInterval(function(){ forwardWeibo(count++); }, 5000);
打開 Chrome 開發者工具,切換 tab 到 Console,拷貝上面代碼到 Console 中,按回車鍵即可以「5秒1次」的頻率對李笑來老師的這條微博進行轉發評論,如需停止請關閉該頁面再重新打開。
然而僅過了2分鐘,成功轉發50多次之后,后面的轉發全部失敗。經檢查發現,由于我轉發頻率過快,被微博官方暫時封號。回答一些簡單的問題把賬號解封,我把轉發頻率由「5秒1次」改為「10秒1次」,因為除我之外還有其他幾個號也在用腳本刷,他們大概用「10秒1次」的頻率,穩定的轉發沒有間斷過,所以「10秒1次」應該是相對安全的。
我調整頻率之后重新開始轉發,但還是轉發失敗,手動操作后發現轉發需要輸入驗證碼,以前并沒有這個環節,看來剛才的封號是有一些后遺癥的。驗證碼我才不怕,專業的打碼服務 打碼兔 連12306的驗證碼都能輕松應付,識別這里的驗證碼就是小兒科。但接入 打碼兔 的工作量有點大,我還是先找找看,有沒有更簡單的方法。
果然還真被我找到了,雖然轉發的時候需要輸入驗證碼,但評論的時候并不用,手動操作一把,評論并轉發也能成功,便馬上新增了一個評論的方法,具體代碼如下。
// 評論微博,并轉發 function commentWeibo(content) { var formData = new FormData(); formData.append("act", "post"); formData.append("mid", "4024988475919525"); formData.append("uid", "1760390531"); formData.append("forward", "1"); formData.append("isroot", "0"); formData.append("content", content); formData.append("location", "page_100505_home"); formData.append("module", "scommlist"); formData.append("group_source", ""); formData.append("tranandcomm", "1"); formData.append("pdetail", "1005051576218000"); formData.append("_t", "0"); var xhr = new XMLHttpRequest(); xhr.timeout = 3000; xhr.responseType = "text"; xhr.open("POST", "http://weibo.com/aj/v6/comment/add?ajwvr=6&__rnd=" + new Date().getTime(), true); xhr.onload = function(e) { if (this.status == 200 || this.status == 304) { if (this.responseText.code == "100000") { console.log(content); } else { console.log(this.responseText) } } }; xhr.send(formData); } //commentWeibo("評論內容"); // 每10秒評論一次 var count = 35000; setInterval(function(){ forwardWeibo(count++); }, 10000);
沒高興幾分鐘,又發現新的問題,評論成功10條,只有1條轉發成功了,這完全是坑爹啊。看來只有接入 打碼兔 才能徹底解決問題了,估計要花2、3個小時才能搞定,算了,先吃飯、洗澡再弄。
磨蹭了1、2個小時之后回來,發現微博轉發輸入驗證碼的限制已經被取消,但我仍心有余悸,把腳本的頻率改為「30秒1次」讓它慢慢的跑。然后,埋頭研究 打碼兔 的 API,注冊相關開發者賬號,充值測試費用。就在我剛準備寫代碼之際,腳本又失敗了,而且,這次的報錯跟以前都不一樣,原來是我已經被 李笑來老師拉黑了,再也不能轉發評論他老人家任何微博了。
本以為會刷幾萬條微博出來,沒想到只刷了200條不到,這些微博就留作紀念不刪了。下面是提前準備好的批量刪微博的腳本。
//刪除微博 function deleteWeibo() { var items = document.querySelectorAll(".WB_feed_type"); for(var i in items){ if(items[i].getAttribute){ var formData = new FormData(); formData.append("mid", items[i].getAttribute("mid")); var xhr = new XMLHttpRequest(); xhr.open("POST", "http://weibo.com/aj/mblog/del?ajwvr=6", false); xhr.send(formData); console.log(xhr.responseText); } } } deleteWeibo();
信念瞬間崩塌,思想得到解放,果斷去抱著媳婦追 權利的游戲,啪啪啪,真是一個美好夜晚。
最后,祝大家國慶節快樂。如果還想聽我聊技術(che dan),請關注微信公眾號「劼哥舍」,老斯基帶你飆車。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80589.html
摘要:加密數字貨幣價格巔峰,區塊鏈成二線企業股價春藥年月日,是區塊鏈行業的高光時刻,整個加密數字貨幣市值億美元,人民幣近萬億元。直接原因是,當日,中網載線剛剛宣布與井通網絡科技有限公司合作開展區塊鏈產業。 加密數字貨幣價格巔峰,區塊鏈成二線企業股價春藥 2018 年 1 月 8 日,是區塊鏈行業的高光時刻,整個加密數字貨幣市值 8139 億美元,人民幣近 6 萬億元。在 10 天之前,12 ...
摘要:記筆記很有必要相信我,大多數人的記憶力是不可靠的。解決方式遍歷的順序不確定因為對象不是有序的。出租過程中趕走了某些房客。具體來說就是說存在某個空間沒有元素的數組便是稀疏數組怎么處理將會確認這個位置有沒有元素存在。同檢查元素是否存在 記筆記很有必要——相信我,大多數人的記憶力是不可靠的。 ——《與時間做朋友》李笑來 數組 值的有序集合 弱類型 數組中的元素可以是各種類型的 ...
閱讀 3258·2021-10-11 10:59
閱讀 2812·2021-10-11 10:58
閱讀 2244·2021-09-04 16:45
閱讀 2717·2019-08-30 15:44
閱讀 671·2019-08-30 15:44
閱讀 3199·2019-08-30 10:51
閱讀 1597·2019-08-29 18:46
閱讀 2749·2019-08-29 13:57