first commit

This commit is contained in:
cheney 2026-01-29 16:34:06 +08:00
commit 37e2b7ef82
4 changed files with 153 additions and 0 deletions

4
Readme.md Normal file
View File

@ -0,0 +1,4 @@
已知 Cookie 及 sec_user_id, 实现清空收藏和点赞功能.

11
package.json Normal file
View File

@ -0,0 +1,11 @@
{
"name": "p20260129-douxiaoyun",
"version": "1.0.0",
"description": "已知 Cookie 及 sec_user_id, 实现清空收藏和点赞功能.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}

4
src/config.json Normal file

File diff suppressed because one or more lines are too long

134
src/index.js Normal file
View File

@ -0,0 +1,134 @@
// 读取配置文件
import { readFileSync } from 'fs';
const config = JSON.parse(readFileSync('./src/config.json', 'utf8'));
const { cookie, sec_user_id } = config;
async function getFavorite() {
try {
const response = await fetch(`https://www.douyin.com/aweme/v1/web/aweme/favorite/?device_platform=webapp&aid=6383&channel=channel_pc_web&sec_user_id=${sec_user_id}&max_cursor=0&min_cursor=0&whale_cut_token=&cut_version=1&count=18&publish_video_strategy_type=2&update_version_code=170400&pc_client_type=1&pc_libra_divert=Windows&support_h265=1&support_dash=1&cpu_core_num=8&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1536&screen_height=864&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=122.0.6261.95&browser_online=true&engine_name=Blink&engine_version=122.0.6261.95&os_name=Windows&os_version=10&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=100&webid=7588123201441105427&uifid=e438e504399eecf9c2f65594851517a53fcd0a47c3feace6f386418d12bbc04d0e409b50ec8a21ef6eff4b825cd64059646e0a366a371675723852d9a6540fb6f5091520701820efa27f3a3704dddb313966d30cb1eb174337518d6be3053846f8e3a789519374cdfccbab779ff03ecc6f7e7de633af65c7c8023a60b56e88d25276be703f2bf75e67ae6889151319ddab78703305a3c9034797e4620f16cafc7027bf0cb4e50041e1bf97725dd3c1906f45d3565d6b31aadf8fcfd836827d98&verifyFp=verify_mjmrx3qn_TELLC7l8_syRO_4t1Z_9xE4_wiK4naxXhlHj&fp=verify_mjmrx3qn_TELLC7l8_syRO_4t1Z_9xE4_wiK4naxXhlHj&msToken=XVrfBx2H--46EDtKA8gvp94fyaO9Q6EWz4m7eVDiWHfNgRjdqIp07r2di--6kDYgSqY_Aavj6a4uPFIFXvp0vaU-qDIxoi4ACF48HVDaIBG1tEPorMOlTqGBADKGKSngV31AfgHTX5YpCYhMd-ujv3ia8nmQ8fUyqqvPRUvxFhM%3D&a_bogus=Qj4RkeSLExWfcd%2Fb8KNZ76OUUHgANPuyMaTdRyKPSOOOaZFY-bNPKOSXcxoqWhLBSSBzw9-H7fGlbjVbYUXTZHHkFmpvS8hbCT25I0mLZqq6Tl4%2FDNm8CgTzqwse0YvNaA9SiImR1sMN2VnRVH5YAddGH5FqQ5DgSqB9pZt9rDCW3PgTnn2GCrfAVqy%3D&timestamp=1769668348&x-secsdk-web-signature=48a49129857d5973920a84fbca09b630`, {
"headers": {
"accept": "application/json, text/plain, */*",
"accept-language": "zh-CN,zh;q=0.9",
"bd-ticket-guard-client-data": "eyJ0c19zaWduIjoidHMuMi45YzVhZDExY2IzMmExOWQ3MTdjZWZmOGExYjAxYjkxNDA1YWUyZTk1ZDExMjU0ZDg4MjhmZWVlOGJiZTI0MTBiYzRmYmU4N2QyMzE5Y2YwNTMxODYyNGNlZGExNDkxMWNhNDA2ZGVkYmViZWRkYjJlMzBmY2U4ZDRmYTAyNTc1ZCIsInJlcV9jb250ZW50IjoidGlja2V0LHBhdGgsdGltZXN0YW1wIiwicmVxX3NpZ24iOiJGSkxxQ3RxT2h2bnZUU0lVMVgvUmk3N0c1dmdOdVFWVFdGdGZ6VjhiaVFVPSIsInRpbWVzdGFtcCI6MTc2OTY2ODMwOX0=",
"bd-ticket-guard-ree-public-key": "BH2nziZtwzaB108FZYGcV1umH3+gTo0SoInGzkVGyTrTwuu7TG6mvDetCUN4HqQD6S7HH1EuQQnU6tAdWeXOkQk=",
"bd-ticket-guard-version": "2",
"bd-ticket-guard-web-sign-type": "1",
"bd-ticket-guard-web-version": "2",
"cache-control": "no-cache",
"pragma": "no-cache",
"sec-ch-ua": "\"Chromium\";v=\"122\", \"Not(A:Brand\";v=\"24\", \"Google Chrome\";v=\"122\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"uifid": "e438e504399eecf9c2f65594851517a53fcd0a47c3feace6f386418d12bbc04d0e409b50ec8a21ef6eff4b825cd64059646e0a366a371675723852d9a6540fb6f5091520701820efa27f3a3704dddb313966d30cb1eb174337518d6be3053846f8e3a789519374cdfccbab779ff03ecc6f7e7de633af65c7c8023a60b56e88d25276be703f2bf75e67ae6889151319ddab78703305a3c9034797e4620f16cafc7027bf0cb4e50041e1bf97725dd3c1906f45d3565d6b31aadf8fcfd836827d98",
"cookie": cookie,
"Referer": "https://www.douyin.com/user/self?from_tab_name=main&showTab=like",
"Referrer-Policy": "no-referrer-when-downgrade"
},
"body": null,
"method": "GET"
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
return data;
} catch (error) {
console.error('Error fetching favorite list:', error);
return null;
}
}
async function getAndUnFavorite() {
try {
let ret = await getFavorite();
if (!ret || !ret.aweme_list) {
console.error('No favorite list found');
return;
}
let aweme_list = ret.aweme_list;
let aweme_ids = [];
for (let index = 0; index < aweme_list.length; index++) {
const element = aweme_list[index];
if (element && element.aweme_id) {
aweme_ids.push(element.aweme_id);
}
}
if (aweme_ids.length > 0) {
console.log(`Found ${aweme_ids.length} favorite items`);
await unFavorites(aweme_ids);
} else {
console.log('No favorite items to unfavorite');
}
} catch (error) {
console.error('Error in getAndUnFavorite:', error);
}
}
async function unFavorites(ids) {
try {
// 构建 item_type_map
const item_type_map = {};
ids.forEach(id => {
item_type_map[id] = 0;
});
// 构建请求体
const body = `aweme_ids=${ids.join('%2C')}&item_type_map=${encodeURIComponent(JSON.stringify(item_type_map))}`;
const response = await fetch("https://www.douyin.com/aweme/v1/web/cancel/item/digg/multi/?device_platform=webapp&aid=6383&channel=channel_pc_web&pc_client_type=1&pc_libra_divert=Windows&update_version_code=170400&support_h265=1&support_dash=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1536&screen_height=864&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=122.0.6261.95&browser_online=true&engine_name=Blink&engine_version=122.0.6261.95&os_name=Windows&os_version=10&cpu_core_num=8&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=100&webid=7588123201441105427&uifid=e438e504399eecf9c2f65594851517a53fcd0a47c3feace6f386418d12bbc04d0e409b50ec8a21ef6eff4b825cd64059646e0a366a371675723852d9a6540fb6f5091520701820efa27f3a3704dddb313966d30cb1eb174337518d6be3053846f8e3a789519374cdfccbab779ff03ecc6f7e7de633af65c7c8023a60b56e88d25276be703f2bf75e67ae6889151319ddab78703305a3c9034797e4620f16cafc7027bf0cb4e50041e1bf97725dd3c1906f45d3565d6b31aadf8fcfd836827d98&msToken=F0kPDGU38Gd8N6XXWgz-L8OtZkRJ7A_CXcll-C3uMUXHrW3Yz1BM2227vKwOEKgiCeyc4qASII7SoiNRVDUGx5oUd_lhMCnFlQlnzoO4D8Rm4p5VsSn4pZgkl0Wmhz27vn8FHeONpv9g0VFvM_XFIAJzDh9thrKpo0FiNzv0KT4%3D&a_bogus=OjsRhH77YNWnOVMG8cDitWclrH6ANBuyVaT2bjIT9NYYahFb5uPpKz-Ocqwdm5NwRSBzwHQHJDAuGddG8UXt2C9kLmZDShXyCG29I8vL0qNpbMU8gN8YC8kFKwsTWbhi-%2FQriC6R1ssr2VVRnr5DAQdGH5zHQcDgWqB5p2tyrDC83TyTIo%2FveahQ&verifyFp=verify_mjmrx3qn_TELLC7l8_syRO_4t1Z_9xE4_wiK4naxXhlHj&fp=verify_mjmrx3qn_TELLC7l8_syRO_4t1Z_9xE4_wiK4naxXhlHj", {
"headers": {
"accept": "application/json, text/plain, */*",
"accept-language": "zh-CN,zh;q=0.9",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
"pragma": "no-cache",
"sec-ch-ua": "\"Chromium\";v=\"122\", \"Not(A:Brand\";v=\"24\", \"Google Chrome\";v=\"122\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"uifid": "e438e504399eecf9c2f65594851517a53fcd0a47c3feace6f386418d12bbc04d0e409b50ec8a21ef6eff4b825cd64059646e0a366a371675723852d9a6540fb6f5091520701820efa27f3a3704dddb313966d30cb1eb174337518d6be3053846f8e3a789519374cdfccbab779ff03ecc6f7e7de633af65c7c8023a60b56e88d25276be703f2bf75e67ae6889151319ddab78703305a3c9034797e4620f16cafc7027bf0cb4e50041e1bf97725dd3c1906f45d3565d6b31aadf8fcfd836827d98",
"x-secsdk-csrf-token": "DOWNGRADE",
"cookie": cookie,
"Referer": "https://www.douyin.com/user/self?from_tab_name=main&showTab=like",
"Referrer-Policy": "no-referrer-when-downgrade"
},
"body": body,
"method": "POST"
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
console.log('Unfavorite result:', data);
return data;
} catch (error) {
console.error('Error unfavoriting items:', error);
return null;
}
}
// 测试函数
async function test() {
// 测试获取喜欢列表
const favoriteResult = await getFavorite();
console.log('Favorite list result:', favoriteResult);
// 测试获取并取消喜欢
await getAndUnFavorite();
}
setInterval(() => {
test();
}, 10 * 1000);