IT/IT 인터넷

티스토리 블로그에서 내가 구독 중이지만 나를 구독하지 않은 블로그 찾는 방법(맞구독 작업 시 유용하게 사용하세요)

print() 2025. 3. 6. 01:04
300x250
const BLOG_ID = 4962889; // 내 블로그 ID

async function fetchSubscribers() {
    let page = 1;
    let allSubscribers = new Set();

    // 첫 요청에서 totalCount 가져오기
    let firstResponse = await fetch(`https://www.tistory.com/legacy/subscription/blog/${BLOG_ID}/followers?page=${page}&sortType=recency`);
    let firstData = await firstResponse.json();

    if (!firstResponse.ok) {
        console.error(`HTTP error! Status: ${firstResponse.status}`);
        return new Set();
    }

    let totalCount = firstData.data.totalCount;
    let pageSize = firstData.data.data.length;
    let totalPages = Math.ceil(totalCount / pageSize);

    // 모든 페이지 요청하여 구독자 리스트 수집
    for (let i = 1; i <= totalPages; i++) {
        let response = await fetch(`https://www.tistory.com/legacy/subscription/blog/${BLOG_ID}/followers?page=${i}&sortType=recency`);
        let data = await response.json();

        if (!response.ok) {
            console.error(`HTTP error on page ${i}! Status: ${response.status}`);
            continue;
        }

        data.data.data.forEach(sub => {
            allSubscribers.add(sub.blogId);
        });
    }

    return allSubscribers;
}

async function fetchMyFollowings() {
    let response = await fetch("https://www.tistory.com/legacy/subscription/user/followings?isSummary=false");
    let data = await response.json();

    if (!response.ok) {
        console.error(`HTTP error! Status: ${response.status}`);
        return new Map();
    }

    let myFollowings = new Map();
    data.data.forEach(following => {
        myFollowings.set(following.id, { name: following.nickname, url: following.defaultUrl });
    });

    return myFollowings;
}

async function findNotFollowingMeBack() {
    let mySubscribers = await fetchSubscribers();
    let myFollowings = await fetchMyFollowings();

    let notFollowingMeBack = [...myFollowings.entries()]
        .filter(([followingId, _]) => !mySubscribers.has(followingId))
        .map(([followingId, info]) => ({
            id: followingId,
            name: info.name,
            url: info.url
        }));

    console.log("내가 구독 중이지만, 나를 구독하지 않은 블로그 목록:");
    notFollowingMeBack.forEach(blog => {
        console.log(`Name: ${blog.name}, BlogId: ${blog.id}, URL: ${blog.url}`);
    });
}

// 실행
findNotFollowingMeBack();

 

 

이전에 올린 나를 구독 중인데 내가 구독하지 않은 리스트 추출하는 게 반응이 좋아 그 반대인 내가 구독 중인데 나를 구독하지 않은 리스트를 추출하는 소스코드를 가지고 왔습니다.

 

소스코드에 겁먹지 말고 한번 따라 해 보세요.

 

우선 티스토리 메인 화면에서 로그인 후 F12를 눌려 관리자 도구를 여세요.

 

 

티스토리 메인화면에서 F12를 눌려  관리자 도구를  열고 요소 탭에서  blogid라고  검색하여 본인의 id를 찾는다

 

 

요소 탭에서 컨트롤+F를 눌려 blogid라고 검색하여 본인 블로그 고유 아이디를 찾으세요.

 

숫자로 이루어진 본인의 블로그 아이디를 소스코드 최상단 변수에 입력하세요.

const BLOG_ID = 4962889;  <<< 이 숫자를 본인 숫자로 변경

해당 변수 숫자를 본인 블로그 아이디로 바꿔준다.

 

 

콘솔 탭으로 이동해서 소스코드를 붙여 넣고 엔터, 나를 구독하지 않은 블로그가 추출되었다

 

 

콘솔 탭으로 이동해서 소스코드를 붙여 넣고 엔터를 치고 기다리면 '내가 구독 중이지만, 나를 구독하지 않은 블로그 목록: '이라는 문구가 표출되고 그 아래 닉네임, 블로그 아이디, 블로그 URL 리스트가 뜹니다. 하나도 없을 경우 아무것도 뜨지 않습니다.

 

구독이 많은 경우 시간이 오래 걸릴 수 있으니 5분 정도 기다려 보시고 잘 안되실 경우 댓글로 문의하시면 친절히 알려드립니다!

 

끝.

 

+ 추가된 내용 - 자주 하는 질문 리스트

 

1.

질문 : 콘솔 탭으로 이동해서 소스코드 붙여 넣으면,
"경고: 이해할 수 없거나 직접 검토하지 않은 코드를 DevTools 콘솔에 붙여 넣지 마세요. 공격자가 ID를 도용하거나 컴퓨터를 제어할 수 있습니다. 아래에 {PH1}을 입력하고 Enter 키를 눌러 붙여넣기를 허용하세요." 이렇게 떠요.

답변 : 콘솔 창에 "붙여넣기 허용"이라고 입력하시면 제한이 풀립니다.

 

 

↓ 아래는 그 반대의 경우 바로 가기 링크입니다.

 

2025.03.05 - [IT/IT 인터넷] - 티스토리 블로그에서 나를 구독 중이지만 내가 구독하지 않은 블로그 찾는 방법 (맞구독 작업 시 유용하게 사용하세요)

 

티스토리 블로그에서 나를 구독 중이지만 내가 구독하지 않은 블로그 찾는 방법 (맞구독 작업 시

const BLOG_ID = 4962889; // 내 블로그 IDasync function fetchSubscribers() { let page = 1; let allSubscribers = new Map(); // 첫 요청에서 totalCount 가져오기 let firstResponse = await fetch(`https://www.tistory.com/legacy/subscription/blog/${BL

codejjang.tistory.com

 

300x250