0Pricing
Browser Extensions Development (Chrome & Edge) · 강의

네트워크 요청 차단

`declarativeNetRequest`를 사용해 광고나 추적 스크립트처럼 원치 않는 네트워크 요청을 차단하는 규칙을 정의하는 방법을 학습합니다.

네트워크 요청 차단은(는) CoddyKit의 무료 Browser Extensions Development (Chrome & Edge) 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Browser Extensions Development (Chrome & Edge) 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Browser Extensions Development (Chrome & Edge) 강의에는 총 4개의 강의가 포함되어 있습니다.

이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.

Intro to Blocking Requests

Welcome to modifying web requests! This lesson introduces declarativeNetRequest, a powerful API for controlling network requests in your browser extension.

You'll learn how to define rules to block unwanted content like ads, tracking scripts, or specific resources, making web browsing cleaner and faster.

Why Block Network Requests?

Blocking network requests isn't just about privacy; it's also about performance and user experience.

  • Remove Ads: Block requests to ad servers.
  • Stop Trackers: Prevent tracking scripts from loading.
  • Improve Performance: Less data downloaded means faster page loads.
  • Enhance Security: Block malicious domains or content.

Declarative vs. Imperative

Traditional ad blockers often use imperative logic: JavaScript code that runs on every page to detect and block elements.

declarativeNetRequest is declarative. You define rules, and the browser handles the blocking efficiently, often without waking up your extension's JavaScript. This is faster and more resource-friendly!

Manifest Permission for Blocking

To use declarativeNetRequest, your extension needs to declare the permission in its manifest.json file.

This tells the browser your extension intends to modify network requests.

{
  "manifest_version": 3,
  "name": "My Blocker",
  "version": "1.0",
  "permissions": [
    "declarativeNetRequest"
  ]
}

Structure of a Blocking Rule

A blocking rule is an object with an id, an action, and a condition. The browser checks these conditions against every network request.

  • id: A unique number for the rule.
  • action: What to do (e.g., 'block', 'redirect').
  • condition: When to apply the action (e.g., 'urlFilter', 'resourceTypes').

The 'Block' Action Type

For this lesson, we'll focus on the "block" action. When a request matches a rule with this action, the browser simply prevents that request from completing.

The action part of your rule will look like this:

{
  "action": {
    "type": "block"
  }
}

Conditions: `urlFilter`

The urlFilter property in a rule's condition allows you to specify a pattern for URLs to match. It's like a mini-regex.

  • "*://*.example.com/*" matches any subdomain of example.com.
  • "*://ads.google.com/*" specifically targets Google ads.
  • "*track*" matches URLs containing 'track'.

Conditions: `resourceTypes`

You can also specify which types of resources to block using resourceTypes. This helps you target specific content like images, scripts, or fonts.

Common types include "script", "image", "stylesheet", "media", and "font".

Adding Dynamic Blocking Rules

Rules can be added dynamically by your extension using chrome.declarativeNetRequest.updateDynamicRules(). This is often done in your background script.

This example adds a rule to block requests containing "adserver" in their URL, specifically for scripts and images.

console.log("Background script running.");

const BLOCK_RULE_ID = 1;

chrome.runtime.onInstalled.addListener(() => {
  chrome.declarativeNetRequest.updateDynamicRules({
    removeRuleIds: [BLOCK_RULE_ID], // Remove if already exists
    addRules: [{
      id: BLOCK_RULE_ID,
      priority: 1,
      action: { type: "block" },
      condition: {
        urlFilter: "*://*adserver*/*",
        resourceTypes: ["script", "image"]
      }
    }]
  }, () => {
    if (chrome.runtime.lastError) {
      console.error("Error updating rules: ", chrome.runtime.lastError);
    } else {
      console.log("Blocking rule added!");
    }
  });
});

// To test, visit a page with 'adserver' in script/image URLs.

Quick Check: Rule Matching

Consider the following blocking rule:

{ "id": 2, "priority": 1, "action": { "type": "block" }, "condition": { "urlFilter": "*://*.tracker.com/*", "resourceTypes": ["script", "image"] } }

Which of these requests would be blocked?

Recap: Blocking Requests

Great job! You've learned the basics of blocking network requests with declarativeNetRequest.

  • It's a powerful, performant, and privacy-friendly API.
  • Rules consist of an id, action (e.g., "block"), and condition.
  • urlFilter and resourceTypes are key for defining conditions.
  • Dynamic rules can be added and managed using updateDynamicRules().

Next, you'll explore modifying headers!

자주 묻는 질문

“네트워크 요청 차단” 강의는 무료인가요?

네 — “네트워크 요청 차단” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Browser Extensions Development (Chrome & Edge) 강의 전체를 잠금 해제할 수 있습니다. Browser Extensions Development (Chrome & Edge) 강의에는 총 4개의 강의가 포함되어 있습니다.

“네트워크 요청 차단”에서 뭘 배우나요?

`declarativeNetRequest`를 사용해 광고나 추적 스크립트처럼 원치 않는 네트워크 요청을 차단하는 규칙을 정의하는 방법을 학습합니다. 브라우저에서 직접 실행하는 실습 코드로 Browser Extensions Development (Chrome & Edge)을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Browser Extensions Development (Chrome & Edge)을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Browser Extensions Development (Chrome & Edge)은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“네트워크 요청 차단” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Browser Extensions Development (Chrome & Edge) 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Browser Extensions Development (Chrome & Edge) 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 네트워크 요청 차단
  2. 요청 헤더 수정
  3. URL 리디렉션 및 재작성
  4. 동적 규칙과 declarativeNetRequest 디버깅
← Browser Extensions Development (Chrome & Edge)(으)로 돌아가기