Linux용 자체 호스트

Linux는 Chrome 사용자가 외부에서 호스팅되는 확장 프로그램을 설치할 수 있는 유일한 플랫폼입니다. Chrome 웹 스토어. 이 도움말에서는 crx를 패키징, 호스팅, 업데이트하는 방법을 설명합니다. 범용 웹 서버에서 가져온 것입니다. 확장 프로그램이나 테마만 배포하는 경우 Chrome 웹 스토어에 문의하는 경우 웹 스토어 호스팅 및 업데이트를 참조하세요.

패키지

확장 프로그램과 테마는 .crx 파일로 제공됩니다. Chrome 개발자를 통해 업로드하는 경우 Dashboard를 실행하면 대시보드가 자동으로 crx 파일을 만듭니다. 게시된 경우 개인 서버의 경우 crx 파일을 로컬로 만들거나 Chrome에서 다운로드해야 합니다. 웹 스토어로 이동합니다.

Chrome 웹 스토어에서 .crx 다운로드

확장 프로그램이 Chrome 웹 스토어에서 호스팅되는 경우 .crx 파일은 개발자 대시보드 '내 등록정보'에서 확장 프로그램을 찾습니다. '추가 정보'를 클릭하세요. 팝업 창에서 파란색 main.crx 링크를 클릭하여 다운로드합니다.

개발자 대시보드에서 .crx 다운로드

다운로드한 파일은 개인 서버에서 호스팅할 수 있습니다. 이것은 확장 프로그램의 콘텐츠가 Chrome 웹 스토어에서 서명되기 때문입니다. 이 잠재적 공격과 조작을 탐지하는 데 도움이 됩니다.

로컬에서 .crx 만들기

확장 프로그램 디렉터리는 확장 프로그램 관리 페이지에서 .crx 파일로 변환됩니다. 다음으로 이동 chrome://extensions/하거나 Chrome 메뉴를 클릭하고 포인터를 '도구 더보기' 위에 올려놓으세요. + '확장 프로그램'을 선택합니다.

확장 프로그램 관리 페이지에서 옆에 있는 전환 스위치를 클릭하여 개발자 모드를 사용 설정합니다. 개발자 모드. 그런 다음 확장 프로그램 패키지 버튼을 선택합니다.

개발자 모드를 선택한 후 확장 프로그램을 클릭합니다.

확장 프로그램 루트 디렉터리 필드에 확장 프로그램의 폴더 경로를 지정한 후 광고 확장 포장 버튼 최초 패키지인 경우 비공개 키 필드는 무시합니다.

확장 프로그램 경로를 지정한 다음 확장 프로그램을 클릭 패키지로 지정

Chrome에서 .crx 파일과 확장 프로그램의 다음 파일이 포함된 .pem 파일, 이렇게 두 개의 파일을 만듭니다. 비공개 키를 생성합니다.

패키징된 확장 프로그램 파일

비공개 키를 분실하지 마세요. .pem 파일을 안전한 곳에 보관합니다. 될 것입니다 확장 프로그램을 업데이트해야 합니다.

.crx 패키지 업데이트

manifest.json에서 버전 번호를 늘려 확장 프로그램의 .crx 파일을 업데이트합니다.

{
  ...
  "version": "1.5",
  ...
  }
}
{
  ...
  "version": "1.6",
  ...
  }
}

확장 프로그램 관리 페이지로 돌아가 광고 확장 패키지 버튼을 클릭합니다. 개인 키의 위치에 관한 정보를 제공합니다.

확장 프로그램 파일 업데이트

이 페이지에는 업데이트된 패키지 확장 프로그램의 경로가 제공됩니다.

확장 프로그램 파일 업데이트

명령줄을 통해 패키징

chrome.exe를 호출하여 명령줄에서 확장 프로그램을 패키징합니다. --pack-extension 사용 플래그를 사용하여 확장 프로그램 폴더 위치를 지정하고 --pack-extension-key 플래그를 사용하여 는 확장 프로그램의 비공개 키 파일 위치를 지정합니다.

chrome.exe --pack-extension=C:\myext --pack-extension-key=C:\myext.pem

호스트

.crx 파일을 호스팅하는 서버는 적절한 HTTP 헤더를 사용하여 사용자가 광고 확장을 클릭합니다.

Chrome은 다음 중 하나에 해당하는 경우 파일을 설치할 수 있는 것으로 간주합니다.

  • 파일의 콘텐츠 유형이 application/x-chrome-extension입니다.
  • 파일 접미사는 .crx이며 다음 조건이 모두 참입니다. <ph type="x-smartling-placeholder">
      </ph>
    • 이 파일은 HTTP 헤더 X-Content-Type-Options: nosniff로 제공되지 않습니다.
    • 파일은 다음 콘텐츠 유형 중 하나로 게재됩니다.
    • 빈 문자열
    • "text/plain"
    • "application/octet-stream"
    • "unknown/unknown"
    • "application/unknown"
    • "\*/\*"

설치 가능한 파일을 인식하지 못하는 가장 일반적인 이유는 서버에서 헤더 X-Content-Type-Options: nosniff. 두 번째로 일반적인 이유는 서버가 알 수 없는 콘텐츠 유형: 이전 목록에 없는 콘텐츠 유형입니다. HTTP 헤더 문제를 해결하려면 서버 구성을 변경하거나 다른 서버에서 .crx 파일을 호스팅해 보세요.

업데이트

브라우저는 설치된 확장 프로그램에 업데이트 URL이 있는지 몇 시간마다 확인합니다. 각 객체에 대해 해당 URL에 요청하여 업데이트 매니페스트 XML 파일을 찾습니다.

  • 업데이트 확인에서 반환되는 콘텐츠는 최신 상태를 명시한 업데이트 매니페스트 XML 문서입니다. 확장 프로그램 버전입니다

업데이트 매니페스트에 설치된 버전보다 최신 버전이 표시된 경우 새 버전이 다운로드 및 설치됩니다. 수동 업데이트와 마찬가지로 새 .crx 파일은 서명되어야 합니다. 현재 설치된 버전과 동일한 개인 키를 사용합니다.

참고: 사용자 개인정보 보호를 위해 Chrome은 자동 업데이트 매니페스트 요청과 함께 쿠키 헤더를 전송하지 않으며 이러한 요청에 대한 응답에서 모든 Set-Cookie 헤더를 무시합니다.

업데이트 URL

Chrome 웹 스토어 외부 서버에서 호스팅되는 확장 프로그램은update_url manifest.json 파일을 다운로드합니다.

{
  "name": "My extension",
  ...
  "update_url": "https://myhost.com/mytestextension/updates.xml",
  ...
}

매니페스트 업데이트

서버가 반환한 업데이트 매니페스트는 XML 문서여야 합니다.

<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
  <app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
    <updatecheck codebase='https://myhost.com/mytestextension/mte_v2.crx' version='2.0' />
  </app>
</gupdate>

이 XML 형식은 Google의 업데이트 인프라인 Omaha에서 차용한 것입니다. 이 광고 확장 시스템은 <app><updatecheck> 요소에 다음 속성을 사용합니다. 매니페스트 업데이트:

appid
확장 프로그램 ID는 패키징에 설명된 대로 공개 키의 해시를 기반으로 생성됩니다. 확장 프로그램의 ID는 확장 프로그램 관리 페이지에 표시됩니다.
코드베이스
.crx 파일의 HTTPS URL
version
클라이언트에서 codebase로 지정된 .crx 파일을 다운로드해야 하는지 결정하는 데 사용합니다. 'version'의 값과 일치해야 합니다. .crx 파일의 manifest.json 파일에 있습니다.

업데이트 매니페스트 XML 파일에는 여러 개의 <app> 요소.

테스트

기본 업데이트 확인 빈도는 몇 시간이지만 Update 확장 프로그램 관리 페이지에서 지금 확장 프로그램 버튼을 클릭하세요.

지금 확장 프로그램 업데이트

이렇게 하면 설치된 모든 확장 프로그램에 대한 검사가 시작됩니다.

고급 사용법: 요청 매개변수

기본적인 자동 업데이트 메커니즘은 서버 측 작업을 정적 XML 파일을 Apache와 같은 일반 웹 서버에 설치하고 해당 XML 파일을 새 파일로 업데이트합니다. 확장 프로그램 버전이 출시됩니다.

여러 확장 프로그램을 호스팅하는 개발자는 확장 프로그램 ID를 나타내는 요청 매개변수를 확인할 수 있습니다. 버전 정보를 확인할 수 있습니다 이 매개변수를 포함하면 확장 프로그램이 동일한 URL에 정적 XML 파일 대신 동적 서버 측 코드를 실행합니다.

요청 매개변수의 형식은 다음과 같습니다.

?x=EXTENSION_DATA

여기서 EXTENSION_DATA는 다음과 같은 형식의 URL 인코딩 문자열입니다.

id=EXTENSION_ID&v=EXTENSION_VERSION

예를 들어 두 개의 확장 프로그램이 동일한 업데이트 URL (https://test.com/extension_updates.php)을 가리킵니다.

  • 확장 프로그램 1 <ph type="x-smartling-placeholder">
      </ph>
    • ID: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
    • 버전: '1.1'
  • 확장 프로그램 2 <ph type="x-smartling-placeholder">
      </ph>
    • ID: 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'
    • 버전: '0.4'

각 확장 프로그램의 업데이트 요청은 다음과 같습니다.

https://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1

https://test.com/extension_updates.php?x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4

고유한 업데이트 URL마다 하나의 요청에 여러 확장 프로그램을 나열할 수 있습니다. 이전 예를 들어 사용자가 두 확장 프로그램을 모두 설치한 경우 두 요청이 하나의 단일 요청:

https://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1&x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4

동일한 업데이트 URL을 사용하는 설치된 확장 프로그램의 수가 GET 요청을 실행할 만큼 큰 경우 URL이 너무 길면 (영문 기준 2,000자 이상) 업데이트 확인 시 있습니다.

고급 사용: 최소 브라우저 버전

확장 프로그램 시스템에 더 많은 API가 추가됨에 따라 작동하는 확장 프로그램의 업데이트된 버전이 제공됩니다. 최신 버전의 브라우저에서만 출시될 수 있습니다. Chrome 자체는 자동 업데이트되기는 하지만 대부분의 사용자층이 새 버전으로 업데이트되기까지 며칠이 걸릴 수 있습니다. 받는사람 특정 업데이트 버전 이상의 Chrome 버전에만 'prodversionmin'을 추가하세요. 속성을 업데이트 응답의 <app> 요소에 추가합니다.

<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
  <app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
    <updatecheck codebase='http://myhost.com/mytestextension/mte_v2.crx' version='2.0' prodversionmin='3.0.193.0'/>
  </app>
</gupdate>

이렇게 하면 사용자가 Chrome을 실행하는 경우에만 버전 2로 자동 업데이트됩니다. 3.0.193.0 이상