源代碼下載鏈接:https://pan.baidu.com/s/16Ar8RLG9WPN8SMlfGsLwjQ 提取碼:hjeo
奮鬥了120多個日夜終於算有點小成果,到今天所有的實戰內容就都完事了。這個是我最後一次和大家分享代碼。薅羊毛本身不違法就這個事情本身也不算在道德陰暗面,不過大家切莫指望這個有所…大家娛樂學習都成。千萬別拿這個代碼做一些不適合的事情。
個人認爲最值得大家擁有的就是薅羊毛專業版和抖音短視頻養號。自媒體大道當行的時代這2個app還是能做點小事情的,接下來我會潛心研究基於Python的自媒體小助手希望大家也能關注和支持我。
薅羊毛代碼99%都是我原創,100多天的努力老鐵給點支持,小弟謝過了。 項目結構大家可以先看一下。源代碼包含:薅羊毛個人版和10多個高收益App集合。有圖有真相,下面的2個圖已經說明一切了。
列舉一下包含的代碼:
UI版本
- 薅羊毛專業版
- 薅羊毛個人版
- 薅羊毛UI版
- 抖音短視頻養號
- 抖音三合一小助手
- 抖音小助手
- 彩蛋視頻小助手
- 火火視頻小助手
- 火山小助手
- 今日頭條輔助
- 快逗小助手
- 快手輔助
- 閃電盒子極速版輔助
- 小吃貨助手
- 小說閱讀輔助
- 音浪短視頻輔助
- 中青看點小助手
- 長豆
- 刷寶短視頻
- 魔視(沒做完不搞了)
- 小視頻類
- 抖音極速版
- 快手極速版
- 火山極速版
- 火火視頻極速版
- 彩蛋視頻
- 栗子視頻
- 有顏短視頻
- 音浪短視頻
- 閃電盒子極速版
- 鯉刷刷
- 魔視
- 紅包視頻
- 天天視頻
- 追看視頻
- 愛走路(愛視頻模塊)
- 快音
- 淘看點
- 網賺紅包短視頻
- 刷寶短視頻
- 刷爆短視頻
- 快刷
- 淘金號
- 變身記短視頻
- 多多視頻
- 高手短視頻
- 辣手小視頻
- 趣寵短視頻
- 趣多多
- 趣看看
- 趣頭條
- 閃鴨短視頻
- 天天短視頻
- 微視
- 小吃貨短視頻
- 音浪短視頻
- 有顏短視頻
- 中青看點
- 走路類
- 愛走路
- 多多步
- 貓撲運動
- 步多多
- 惠運動(封號)
- 歡樂走
- 走路賺錢
- 小說類
- 七貓免費小說
- 番茄小說
- 瘋讀小說
- 免費淘小說
- 米讀小說
- 喜馬拉雅
- 喜馬拉雅極速版
- 新聞類
- 今日頭條極速版
- 百度極速版
- 看點快報
- 趣頭條
- 惠頭條(看視頻)
- 綜合類
- 京東(領京東豆)
- 閃電盒子極速版
- 淘最熱點
- 玩賺星球
50個小視頻源碼;
7個走路籤到領金幣源碼;
8個故事類源碼;
9個綜合類源碼。
抖音極速版專輯6個源碼(自動刷、看同城、領寶箱、清理緩存、自動答覆和自動提現)
快手極速版專輯4個源碼(自動刷、清理緩存、自動答覆和自動簽到)
火山極速版輯4個源碼(自動刷、清理緩存、自動答覆和自動簽到)
今日頭條專輯4個源碼(讀新聞、清理緩存、讀小說和自動搜索)
火火小視頻專輯(自動刷、清理緩存、自動評論和自動提現)
彩蛋視頻專輯3個源碼(自動刷、自動評論和自動提現)沒有清理緩存的菜單所以沒做
快逗短視頻(自動刷、自動評論和自動提現)沒有清理緩存的菜單所以沒做
有顏短視頻(自動刷、自動評論和自動提現)沒有清理緩存的菜單所以沒做
中青看點(自動刷、清理緩存、自動評論和自動提現)
閃電盒子(自動刷、清理緩存、自動評論和自動提現)
快逗短視頻(自動刷、清理緩存、自動評論和自動提現)
小吃貨短視頻(自動刷、清理緩存、自動評論和自動提現)
音浪短視頻(自動刷、清理緩存、自動評論和自動提現)
抖音養號
抖音三合一小助手
專業版項目雖然是單文件我還是區分了一地下公共方法,感覺還是用處也很大的特別是還在這個平臺上奮鬥的老特們:
//#region 公共方法
/**
* 屏幕向下滑動並延遲timesInterval+-秒
*/
function slideScreenDown(startX, startY, endX, endY, pressTime, timesInterval) {
swipe(startX, startY, endX, endY, pressTime);
let randomMin = timesInterval * 1000;
let randomMax = (parseInt(timesInterval) + 2) * 1000;
let delayTime = random(randomMin, randomMax);
sleep(delayTime);
}
/**
* 按照指定概率隨機上滑
* @param {*} startX
* @param {*} startY
* @param {*} endX
* @param {*} endY
* @param {*} pressTime
* @param {*} probability
*/
function randomUpSildeScreen(startX, startY, endX, endY, pressTime, probability) {
let randomIndex = random(1, parseInt(probability));
if (randomIndex == 1) {
swipe(startX, startY, endX, endY, pressTime);
delayTime = random(12000, 15000);
sleep(delayTime);
}
}
/**
* 連續下滑對上一個無興趣
* 其實得和上滑做個排他,既然無興趣不要在上滑
*/
function randomDownSildeScreen(startX, startY, endX, endY, pressTime, timesInterval, probability) {
let randomIndex = random(1, parseInt(probability));
if (randomIndex == 1) {
swipe(startX, startY, endX, endY, pressTime);
sleep(2000);
swipe(startX, startY, endX, endY, pressTime);
sleep(timesInterval);
}
}
/**
* 屏幕向下滑動並延遲8至12秒
*/
function slideScreenDown(startX, startY, endX, endY, pressTime) {
swipe(startX, startY, endX, endY, pressTime);
let delayTime = random(8000, 12000);
sleep(delayTime);
}
/**
* 隨機點贊
* @param {點贊ID}} view_id
*/
function randomHeart(view_id, probability) {
index = random(1, parseInt(probability));
if (index == 1) {
var target = id(view_id).findOnce();
if (target == null) {
return;
} else {
target.click();
sleep(1000);
}
}
}
/**
* 隨機關注
* @param {控件ID} follow_view_id
* @param {概率} probability
*/
function randomFollow(follow_view_id, probability) {
index = random(1, parseInt(probability));
if (index == 1) {
var target = id(follow_view_id).findOnce();
if (target == null) {
return;
} else {
target.click();
sleep(1000);
}
}
}
/**
* 輸出Tosat和Info日誌
* @param {日誌消息} messagge
*/
function toastInfo(message) {
writeLog(message,"info");
}
/**
* 輸出Tosat和Error日誌
* @param {日誌消息} messagge
*/
function toastError(message) {
writeLog(message,"error");
}
function toastLog(message) {
writeLog(message,"log");
}
function toastWarn(message) {
writeLog(message,"warn");
}
/**
* 寫日誌,toast、consle和文件日誌
* @param {日誌內容} loginfo
* @param {日誌等級} level
*/
function writeLog(loginfo, level) {
try {
var logName=getDate()+"_"+"Log.txt";
var logPath = rootPath + "/日誌/";
let message = getTime() + ":" + loginfo;
if (!files.isDir(rootPath)) {
if (files.create(rootPath)) {
files.create(logPath)
}
} else {
files.create(logPath)
}
let logFilePath = logPath + "/"+logName;
if (!files.exists(logFilePath)) {
files.create(logFilePath);
files.write(logFilePath, message + "\r");//寫日誌
}
else {
files.append(logFilePath, message + "\r");//追加日誌
}
toast(message);
if (level == "log") {
console.log(message);
} else if (level == "info") {
console.info(message);
} else if (level == "warn") {
console.warn(message);
} else if (level == "error") {
console.error(message);
}
} catch (error) {
console.error("系統再寫日誌的時候出現錯誤若不影響使用請略過"+error);
}
}
/**
* 記錄App簽到時間
* @param {App名稱} appName
*/
function getSignTime(appName) {
let key = appName + storageSign;
let value = woolStorage.get(key);
return value;
}
function Color(color) {
return android.graphics.Color.parseColor(color);
}
function GradientDrawable(orientation, color) {
var colors = [];
color.forEach(color => colors.push(Color(color)));
return new android.graphics.drawable.GradientDrawable(android.graphics.drawable.GradientDrawable.Orientation[orientation], colors);
}
/**
* 青少年窗口
*/
function adolescentWindows() {
if (text("我知道了").exists()) {
text("我知道了").findOnce().click();
}
if (text("知道了").exists()) {
text("知道了").findOnce().click();
}
}
/**
* 記錄App簽到時間
* @param {App名稱} appName
*/
function recordSignTime(appName) {
let key = appName + storageSign;
let value = getDate();
woolStorage.put(key, value);
}
/**
* 記錄App一次運行的時間
* @param {appName} appName
* @param {本次運行時間} recordTimes
*/
function appRunTimeRecord(appName, recordTimes) {
let key = appName + storageSign + getDate();
var havedRunTimes = woolStorage.get("" + key + "");
let value = "";
if (havedRunTimes == null) {
woolStorage.put(key, parseInt(recordTimes));
} else {
value = parseInt(havedRunTimes) + parseInt(recordTimes);
woolStorage.put(key, value);
}
}
/**
* 秒轉換成小時
* @param {*} appCount
* @param {*} foreachCount
* @param {*} slideTimes
* @param {*} timesInterval
* @param {*} isExistsLongTimes
*/
function computerTime(appCount, foreachCount, slideTimes, timesInterval, isExistsLongTimes) {
let maxSecond = appCount * foreachCount * slideTimes * timesInterval;
let maxHour = maxSecond / 3600;
return Math.round(maxHour);
}
/**
* 獲取當前時間格式yyyyMMdd
*/
function getDate() {
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
if (month < 10) {
month = "0" + month;
};
var day = date.getDate();
if (day < 10) {
day = "0" + day;
};
return year + "-" + month + "-" + day;
}
/**
*
*/
function getTime() {
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
if (month < 10) {
month = "0" + month;
};
var day = date.getDate();
if (day < 10) {
day = "0" + day;
};
var hour = date.getHours();
if (hour < 10) {
hour = "0" + hour;
};
var minute = date.getMinutes();
if (minute < 10) {
minute = "0" + minute;
};
var seconds= date.getSeconds(); //獲取當前秒數(0-59)
var millisecond =date.getMilliseconds(); //獲取當前毫秒數(0-999)
return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + seconds;
};
/**
* JS構建Map
*/
function Map() {
var obj = {};
this.put = function (key, value) {
obj[key] = value;//把鍵值綁定到obj對象上
}
//size方法,獲取Map容器的個數
this.size = function () {
var count = 0;
for (var attr in obj) {
count++;
}
return count;
}
//get方法,根據key獲取value的值
this.get = function (key) {
if (obj[key] || obj[key] === 0 || obj[key] === false) {
return obj[key]
} else {
return null;
}
}
//remove方法,刪除方法
this.remove = function (key) {
if (obj[key] || obj[key] === 0 || obj[key] === false) {
delete obj[key]
}
}
//each方法,遍歷方法
this.eachMap = function (callBack) {
for (var attr in obj) {
callBack(attr, obj[attr])
}
}
}
/**
* map排序(核心是冒泡有點笨)
*/
function mapSort(mapTask) {
var arr = [];
var result = [];
mapTask.eachMap(function (key, value) {
arr.push(parseInt(value));
result.push(key);
});
var len = arr.length;
for (var i = 0; i < len - 1; i++) {
for (var j = 0; j < len - 1 - i; j++) {
// 相鄰元素兩兩對比,元素交換,大的元素交換到後面
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
//value交換key也得換
var keyTemp = result[j + 1];
result[j + 1] = result[j];
result[j] = keyTemp;
}
}
}
return result;//返回數組
}
/**
*點擊一下屏幕
*/
function clickScreen() {
var x = device.width - device.width * 0.2;
var y = device.height - device.height * 0.2;
toastLog("點擊屏幕" + x + ":" + y);
let clickResult = click(x, y);
toastLog(clickResult);
}
//#endregion
個人認爲最值得大家擁有的就是薅羊毛專業版和抖音短視頻養號。自媒體達到當行的時代這2個app還是能做點小事情的,接下來我會潛心研究基於Python的自媒體小助手希望大家也能關注和支持我。
100 多個源碼一次讓您成爲 AutoJs 高手,高手成大神。同時讓您真真正正的薅羊毛掙外快。
學習知識費力氣,
收集整理更不易。
知識付費甚歡喜,
爲咱碼農謀福利。
源代碼下載鏈接:https://pan.baidu.com/s/16Ar8RLG9WPN8SMlfGsLwjQ 提取碼:hjeo