검색 최적화(SEO)와 IT 기술로 여는 온라인 비즈니스 인사이트
검색엔진 크롤러와 제휴 상품 링크 안전 관리 최종본
Home /

검색엔진 크롤러와 제휴 상품 링크 안전 관리 최종본

쿠팡상품링크, 11번가, G마켓 제휴 링크를 안전하게 삽입하는 방법! referer-based-blocking과 Base64 난독화로 클릭 이벤트 기반 링크 구현, SEO 안전성 확보 방법 공개합니다.


블로그 운영자에게 있어 검색엔진 크롤러의 동작 원리제휴 마케팅 링크 관리는 단순한 기술적인 문제가 아니라, 블로그의 SEO 성과와 직결되는 매우 중요한 부분입니다. 특히 쿠팡 파트너스, 11번가, G마켓과 같은 외부 제휴 링크를 블로그 글에 삽입할 때는 더욱 신중해야 합니다. 링크를 잘못된 방식으로 노출하게 되면, 검색엔진이 해당 페이지를 부정적으로 평가하여 저품질 사이트로 판단할 수 있기 때문입니다.

이번 글에서는 그동안 연재했던 쿠팡 상품 링크 최적화 1~4편의 내용을 종합해, 구글봇의 동작 방식과 자바스크립트 기반 링크 처리 방법, 그리고 안전한 제휴 링크 삽입 전략까지 최종적으로 정리합니다.


1. 제휴 상품링크를 인식하는 검색엔진 크롤러의 기본 동작

검색엔진 크롤러는 웹페이지를 탐색할 때 링크를 어떻게 탐지하고 이동할지 결정합니다. 과거와 현재의 크롤러는 큰 차이가 있는데, 대표적인 크롤러 동작 방식을 아래 표로 정리했습니다.

크롤러 타입 동작 방식
1세대 크롤러 (단순 HTML 파서) HTML 소스코드에서 a href=”…” 태그만 분석
2세대 크롤러 (렌더링 엔진 포함) 자바스크립트까지 실행하여 동적으로 생성된 링크까지 분석 (예: 구글봇은 크롬 기반 렌더링 엔진 사용)

정리
과거에는 a href 태그가 없으면 검색엔진이 링크를 탐지할 수 없었지만,
현재의 구글봇은 실제 브라우저처럼 자바스크립트를 실행하여 링크를 파악할 수 있습니다.

상품 직접 링크와 검색엔진의 인식 방식

즉, 직접 링크는 크롤러가 바로 인식하며, 해당 링크의 목적지까지 확인할 수 있습니다.
검색엔진은 단순히 링크가 존재하는지만 보는 것이 아니라, 링크의 목적지와 콘텐츠의 연관성까지 함께 분석해 페이지의 품질을 평가합니다.

핵심 포인트

링크가 있다는 사실만으로는 저품질 판단이 이루어지지 않습니다.

링크가 연결된 목적지와 콘텐츠의 연관성이 중요한 평가 기준입니다.

따라서 단순히 링크의 형태를 변경한다고 해서 저품질 문제를 피할 수는 없습니다.
결국 목적지가 동일하다면 검색엔진 입장에서는 같은 링크로 판단하기 때문에 아무런 효과가 없게 됩니다

제휴 상품 링크 자바스크립트 활용과 주의할 점

일부 블로그 운영자들은 이러한 문제점을 피하기 위해 자바스크립트를 활용해 동적 링크를 적용하기도 합니다.
그러나 최근의 검색엔진은 자바스크립트로 생성된 링크도 인식하고 추적할 수 있기 때문에,
자바스크립트를 사용해 동적 링크를 구현할 경우 반드시 크롤러의 동작 원리를 이해해야 합니다.


2. 자바스크립트 내부 상품 링크 탐지 가능 여부

자바스크립트로 제휴 링크를 관리할 때, 구글봇이 해당 링크를 실제로 따라갈 수 있는지를 이해하는 것이 중요합니다.
아래는 대표적인 두 가지 상황을 설명합니다.

(A) 일반적인 경우 단순 객체 선언

아래 코드처럼 JS 코드에 있는 링크 문자열 자체는 확인할 수 있습니다. 그러나 이 문자열이 실제로 링크로 작동하는지까지는 판단할 수 없습니다. 또한 검색봇은 스스로 window.open()이나 location.href 같은 클릭 동작을 절대 실행하지 않습니다.
즉, 클릭 기반의 이동은 수행하지 않기 때문에 해당 URL을 따라가지 않습니다.

const urlMap = {
"code1": "https://link.coupang.com/a/abc123",
"code2": "https://link.coupang.com/a/xyz456"
};

특징:

  • 자바스크립트 내부에 단순히 URL 문자열만 존재
  • 구글봇은 이 문자열을 텍스트 형태로만 수집 가능
  • 하지만 클릭을 수행하지 않으므로 링크 이동 불가

정리:
이 경우 구글봇은 실제 링크를 따라가지 못하므로 상대적으로 안전합니다


(B) 버튼 클릭 이벤트 기반

document.body.addEventListener('click', function(e){
const url = urlMap['code1'];
window.open(url, '_blank');
});

특징:

  • 사용자가 버튼을 클릭해야만 링크가 열림
  • 구글봇은 실제 클릭 동작을 수행하지 않음
  • 따라서 링크 이동이 불가능

정리: 클릭 기반으로만 열리는 경우 구글봇은 해당 링크를 따라가지 못하므로 SEO 측면에서 상대적으로 안전한 방식입니다.

구분 붓 동작 SEO 측면
단순 객체 선언 (A) 문자열은 확인 가능하지만 이동 불가 비교적 안전
클릭 이벤트 기반 (B) 클릭하지 않으므로 이동 불가 안전
동적 a href 태그 사용 바로 탐지하고 목적지 확인 가능 노출 위험 높음

3. 상품 링크 사용시 네트워크 요청(fetch)의 문제점

일부 개발자들은 제휴 링크를 효율적으로 관리하기 위해 외부 JSON 파일을 불러와 링크 정보를 관리하는 방식을 사용합니다. fetch(‘/urls.json’)는 브라우저가 외부 네트워크 요청을 보내는 명령입니다. 네트워크 요청 자체를 직접 실행하지 않더라도, 검색봇은 해당 URL에 별도로 접근할 수 있습니다.

JSON 파일은 단순한 데이터이므로, 검색봇은 이 파일 안의 URL들을 그대로 파싱할 수 있습니다.

fetch('/urls.json')
.then(res = res.json())
.then(data = Object.assign(urlMap, data));

문제점

  • JSON 파일이 별도 존재하기 때문에 누구나 직접 접근 가능
  • 구글봇 또한 /urls.json에 직접 접근 가능 링크가 그대로 노출됨
  • 보안과 저품질 방지를 위해 fetch 사용 금지!

해결책: 모든 링크를자바스크립트 내부 객체에 직접 포함시켜야 하며, 외부에서 파일을 불러오지 않아야 합니다.


검색봇의 실제 상품 링크 동작 비교

아래 표는 검색봇이 각 방식별로 링크를 탐지할 수 있는지 정리한 것입니다.

동작 위치 붓 확인 가능 여부 설명
a href=”…” 무조건 가능 HTML 파싱 1단계에서 바로 탐지
fetch(‘/urls.json’) 무조건 가능 JSON 파일 직접 접근 가능
JS 내부 문자열 (urlMap) 텍스트만 확인 가능 이동 불가, 단순 수집 가능
클릭 이벤트 기반 (window.open) 불가능 구글봇은 클릭 동작 수행하지 않음

핵심 포인트: 클릭 이벤트 기반으로 링크를 열면 구글봇이 따라가지 못하므로 SEO 안전성을 높일 수 있습니다.


4. 안전하게 제휴 링크를 차단하는 방법

제휴 링크를 블로그에 노출하면서도 구글봇이 탐지하지 못하게 하려면, 아래 방법들을 권장합니다.

안전한 제휴 링크 관리 전략

fetch 사용 금지

  • 모든 URL을 자바스크립트 내부 객체에 직접 포함합니다.
  • 외부 JSON 파일 요청은 구글봇이 직접 접근 가능하므로 절대 사용하지 않습니다.

Base64 등 난독화 적용

  • 제휴 링크를 그대로 코드에 노출하지 않고 난독화하여 코드 분석 난이도를 높입니다.

클릭 이벤트 기반 링크 구현

  • 구글봇은 실제 클릭 동작을 하지 않으므로 클릭 이벤트 기반 링크는 따라가지 못합니다.

Referer 기반 서버 차단

  • 서버 측에서 Referer를 확인하여 직접 접근을 막고, 블로그 페이지를 통해서만 링크가 작동하도록 설정합니다

예시 코드: 안전한 클릭 기반 제휴 링크

아래 코드는 제휴 링크를 Base64 난독화 후, 사용자가 버튼을 클릭했을 때만 링크가 열리도록 구현한 안전한 방식입니다.

(function(){
const _0xabc123 = {
"x1": atob("aHR0cHM6Ly9saW5rLmNvdXBhbmcuY29tL2EvY1N5RWtQ"),
"x2": atob("aHR0cHM6Ly9saW5rLmNvdXBhbmcuY29tL2EvY1NETTR2")
};

document.body.addEventListener('click', function(e){
const btn = e.target.closest('button.short-link');
if (!btn) return;

const code = btn.dataset.code;
const url = _0xabc123[code];
if (url) {
window.open(url, '_blank', 'noopener,noreferrer');
}
});
})();

상품 링크 코드 설명

Base64 난독화 적용

  • 링크를 직접 노출하지 않고 atob()를 사용해 복호화 처리
  • 코드 분석 난이도 상승 보안 강화

클릭 이벤트 기반 실행

  • 사용자가 버튼을 클릭해야만 링크가 열림
  • 구글봇은 클릭하지 않기 때문에 링크를 탐지하지 못함 SEO 안전

noopener, noreferrer 옵션 사용

  • 새 창으로 열릴 때 보안을 강화하고
  • Referer 정보가 전달되지 않도록 설정

6. 구글/네이버 광고와 제휴 마케팅 링크의 차이

검색엔진이 제휴 링크를 다루는 방식은 자체 광고제휴 마케팅 링크에서 큰 차이가 있습니다.

구분 예시 평가 방식 SEO 영향
자사 광고 구글 애드센스, 네이버 쇼핑/애드포스트 플랫폼에서 직접 운영 저품질 처리 없음, 안정적인 트래픽 수익
제휴 마케팅 링크 쿠팡, 11번가, G마켓 등 외부 도메인으로 이동 사용자 체류 시간 감소 저품질 가능성 존재

핵심 차이점:
자사 광고: 구글이나 네이버가 직접 관리하고 통제하기 때문에 저품질 페이지로 평가되지 않음. 트래픽이 곧 플랫폼의 수익이므로 안전하게 운영 가능.


제휴 링크:
외부 도메인으로 사용자를 이동시키기 때문에 페이지 가치 하락 및 체류 시간 감소 발생. 그 결과 검색엔진이 저품질 페이지로 평가할 가능성이 높음.

제휴 마케팅 링크 문제 최종 정리

검색엔진은 단순히 링크의 유무가 아니라 사용자 경험(UX)을 기반으로 페이지를 평가합니다. 제휴 링크를 잘못 노출하면 페이지 체류 시간 감소, 외부 이동 증가로 인해 저품질 위험이 커집니다. 블로그의 수익성과 SEO를 동시에 지키기 위해서는 검색엔진의 크롤링 원리를 이해하고, 봇이 탐지하기 어려운 방식으로 제휴 링크를 설계해야 합니다.


검색엔진 크롤러는 블로그 링크를 어떻게 인식하나요?

검색엔진 크롤러, 특히 구글봇은 웹페이지의 링크를 단순히 존재 여부만 보는 것이 아니라, 링크의 목적지와 콘텐츠 연관성까지 분석하여 페이지 품질을 평가합니다. 과거 1세대 크롤러는 HTML a href=”…” 태그만 분석했지만, 최신 2세대 크롤러는 자바스크립트까지 렌더링하여 동적 링크도 탐지할 수 있습니다. 따라서 단순히 링크 형태를 바꾸더라도 목적지가 같으면 검색엔진은 동일한 링크로 판단합니다.

자바스크립트 내부 링크는 구글봇이 따라갈 수 있나요?

자바스크립트 내부에 URL 문자열만 존재하는 경우, 구글봇은 텍스트 형태로 수집할 수는 있지만, window.open()이나 location.href 같은 클릭 동작은 수행하지 않습니다. 즉, 단순 객체 선언으로 링크를 관리하면 검색봇이 따라가지 못하므로 상대적으로 안전합니다. 클릭 이벤트 기반으로 링크를 열 경우에도 구글봇은 클릭을 하지 않으므로 안전한 방식으로 분류됩니다.

외부 JSON(fetch) 방식으로 제휴 링크를 관리해도 되나요?

외부 JSON 파일을 불러오는 fetch('/urls.json') 방식은 브라우저가 네트워크 요청을 보내도록 하지만, 해당 파일은 누구나 접근 가능하며 구글봇 또한 직접 접근할 수 있습니다. 따라서 외부 JSON 방식은 링크가 그대로 노출될 위험이 있어 보안과 SEO 측면에서 권장되지 않습니다. 해결책으로는 모든 제휴 링크를 자바스크립트 내부 객체에 직접 포함시키는 방법이 안전합니다.

안전하게 제휴 링크를 삽입하는 방법은 무엇인가요?

안전한 제휴 링크 관리를 위해서는 다음 전략을 사용해야 합니다.

  • 모든 URL을 자바스크립트 내부 객체에 직접 포함하고 fetch 사용 금지
  • Base64 등 난독화를 적용해 코드 분석 난이도 상승
  • 클릭 이벤트 기반 링크 구현으로 구글봇이 접근하지 못하게 설정
  • 필요 시 Referer 기반 서버 차단으로 직접 접근 방지

이 방법을 사용하면 제휴 링크를 블로그에 노출하면서도 SEO 안전성을 확보할 수 있습니다.

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다