Linux'ta uzantılar yükleme

Chrome Web Mağazası'nın dışında barındırılan uzantılar yalnızca Linux kullanıcıları tarafından yüklenebilir. Bu makalede, kişisel bir sunucudaki .crx dosyalarının nasıl paketleneceği, barındırılacağı ve güncelleneceği açıklanmaktadır. Bir uzantıyı veya temayı yalnızca Chrome Web Mağazası üzerinden dağıtıyorsanız Web Mağazası Barındırma ve Güncelleme konusuna bakın.

Sunum

Uzantılar ve temalar .crx dosyası olarak sunulur. Chrome Geliştirici Kontrol Paneli üzerinden yükleme yapılırken kontrol paneli .crx dosyasını otomatik olarak oluşturur. Kişisel bir sunucuda yayınlanırsa .crx dosyasının yerel olarak oluşturulması veya Chrome Web Mağazası'ndan indirilmesi gerekir.

Chrome Web Mağazası'ndan .crx dosyasını indirin

Bir uzantı Chrome Web Mağazası'nda barındırılıyorsa .crx dosyası Geliştirici Kontrol Paneli'nden indirilebilir. "Girişleriniz" bölümünün altında uzantıyı bulun ve "Daha fazla bilgi"yi tıklayın. İndirmek için pop-up pencerede mavi main.crx bağlantısını tıklayın.

Geliştirici Kontrol Paneli'nden .crx dosyasını indirme

İndirilen dosya kişisel bir sunucuda barındırılabilir. Uzantının içeriği Chrome Web Mağazası tarafından imzalanacağından, bir uzantıyı yerel olarak barındırmanın en güvenli yoludur. Bu, olası saldırıların ve izinsiz değişikliklerin tespit edilmesine yardımcı olur.

Yerel olarak .crx dosyası oluşturma

Uzantı dizinleri, Uzantı Yönetim Sayfası'nda .crx dosyaya dönüştürülür. Çok amaçlı adres çubuğunda chrome://extensions/ adresine gidin veya Chrome menüsünü tıklayıp fareyle "Diğer Araçlar"ın üzerine gelin ve "Uzantılar"ı seçin.

Uzantı Yönetimi sayfasında, Geliştirici modu'nun yanındaki açma/kapatma düğmesini tıklayarak Geliştirici Modu'nu etkinleştirin. Ardından PAKET UZANTI düğmesini seçin.

Geliştirici Modu İşaretlenir ve Uzantıyı Paketle'yi tıklayın

Uzantı kök dizini alanında uzantı klasörünün yolunu belirtin ve ardından UZANTI UZANTI düğmesini tıklayın. İlk pakette Özel anahtar alanını yoksayın.

Uzantı Yolunu Belirtin ve Uzantıyı Paketle'yi tıklayın

Chrome, bir .crx dosyası ve bir de uzantının özel anahtarını içeren .pem dosyası olmak üzere iki dosya oluşturur.

Paketli Uzantı Dosyaları

Özel anahtarı kaybetmeyin. .pem dosyasını gizli ve güvenli bir yerde tutun; uzantının güncellemesi gerekir.

.crx paketini güncelleme

manifest.json üzerindeki sürüm numarasını artırarak bir uzantının .crx dosyasını güncelleyin.

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

Uzantı Yönetimi Sayfası'na dönün ve PAKET UZANTISI düğmesini tıklayın. Uzantı dizininin yolunu ve özel anahtarın konumunu belirtin.

Uzantı Dosyalarını Güncelleme

Sayfa, güncellenen paket uzantısının yolunu sağlar.

Uzantı Dosyalarını Güncelleme

Komut satırıyla paketleme

chrome.exe yöntemini çağırarak uzantıları komut satırında paketleyin. Uzantı klasörünün konumunu belirtmek için --pack-extension işaretini, uzantının özel anahtar dosyasının konumunu belirtmek için --pack-extension-key işaretini kullanın.

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

Barındırma

.crx dosyalarını barındıran sunucu, kullanıcıların bir bağlantıyı tıklayarak uzantıyı yüklemesine izin vermek için uygun HTTP üst bilgilerini kullanmalıdır.

Google Chrome, aşağıdakilerden biri sağlandığında bir dosyayı yüklenebilir olarak kabul eder:

  • Dosyanın içerik türü: application/x-chrome-extension
  • Dosya son eki .crx ve aşağıdakilerin her ikisi de doğrudur:
    • Dosya X-Content-Type-Options: nosniff HTTP başlığıyla yayınlanmıyor
    • Dosya aşağıdaki içerik türlerinden biriyle yayınlanır:
    • boş dize
    • "text/plain"
    • "application/octet-stream"
    • "bilinmiyor/bilinmiyor"
    • "uygulama/bilinmiyor"
    • "*/*"

Yüklenebilir bir dosyanın tanınmamasının en yaygın nedeni, sunucunun X-Content-Type-Options: nosniff üst bilgisini göndermesidir. İkinci en yaygın neden, sunucunun bilinmeyen bir içerik türü göndermesidir. Bu tür, bir önceki listede yer almaz. HTTP üst bilgisi sorununu düzeltmek için sunucunun yapılandırmasını değiştirin veya .crx dosyasını başka bir sunucuda barındırmayı deneyin.

Güncelleniyor

Tarayıcı, yüklü uzantılarda güncelleme URL'si olup olmadığını birkaç saatte bir kontrol eder. Her biri için bir güncelleme manifest XML dosyası aramak için bu URL'ye bir istekte bulunur.

  • Güncelleme kontrolünün döndürdüğü içerik, bir uzantının en son sürümünü listeleyen bir güncelleme manifesti XML dokümanıdır.

Güncelleme manifestinde yüklü olandan daha yeni bir sürümden bahsediliyorsa tarayıcı yeni sürümü indirip yükler. Manuel güncellemelerde olduğu gibi yeni .crx dosyası şu anda yüklü sürümle aynı özel anahtarla imzalanmalıdır.

Not: Google Chrome, kullanıcı gizliliğini korumak için otomatik güncelleme manifest istekleri içeren Çerez üstbilgileri göndermez ve bu isteklere verilen yanıtlardaki Set-Cookie başlıklarını yoksayar.

Güncelleme URL'si

Chrome Web Mağazası dışındaki sunucularda barındırılan uzantılar, manifest.json dosyalarına update_url alanını içermelidir.

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

Manifesti güncelle

Sunucu tarafından döndürülen güncelleme manifesti bir XML dokümanı olmalıdır.

<?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>

Bu XML biçimi, Google'ın güncelleme altyapısı Omaha tarafından kullanılandan ödünç alınmıştır. Uzantı sistemi, güncelleme manifestinin <app> ve <updatecheck> öğeleri için aşağıdaki özellikleri kullanır:

appidUzantı kimliği, paketleme bölümünde açıklandığı gibi ortak anahtarın karma değerine göre oluşturulur. Uzantının kimliği, Uzantı Yönetimi Sayfası'nda gösterilir
kod tabanı.crx dosyasının HTTPS URL'si.
sürümcodebase tarafından belirtilen .crx dosyasını indirip indirmeyeceğini belirlemek için istemci tarafından kullanılır. .crx dosyasının manifest.json dosyasındaki "version" değeriyle eşleşmelidir.

Güncelleme manifesti XML dosyası, birden fazla <app> öğesi ekleyerek birden çok uzantı hakkında bilgi içerebilir.

Test

Varsayılan güncelleme kontrolü sıklığı birkaç saattir ancak Uzantı Yönetimi sayfasındaki Uzantıları şimdi güncelle düğmesi kullanılarak güncellemenin zorunlu kılınması mümkündür.

Uzantıları Şimdi Güncelleyin

Bu işlem, yüklü tüm uzantıların kontrollerini başlatır.

Gelişmiş kullanım: istek parametreleri

Temel otomatik güncelleme mekanizması, sunucu tarafının çalışmasını, statik bir XML dosyasını Apache gibi herhangi bir düz web sunucusuna bırakmak ve yeni uzantı sürümleri yayınlandıkça güncellemek kadar kolay hale getirmek için tasarlanmıştır.

Birden fazla uzantı barındıran geliştiriciler, güncelleme isteğindeki uzantı kimliğini ve sürümünü belirten istek parametrelerini kontrol edebilir. Bu parametrelerin eklenmesi, uzantıların statik bir XML dosyası yerine dinamik sunucu tarafı kod çalıştıran aynı URL'den güncellenmesine olanak tanır.

İstek parametrelerinin biçimi şu şekildedir:

?x=EXTENSION_DATA

Burada EXTENSION_DATA, URL kodlamalı şu biçimde bir dizedir:

id=EXTENSION\_ID&v=EXTENSION\_VERSION

Örneğin, iki uzantı aynı güncelleme URL'sine (https://test.com/extension_updates.php) yönlendiriyor:

  • Uzantı 1
    • Kimlik: "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    • Sürüm: "1.1"
  • Uzantı 2
    • Kimlik: "bbbbbbbbbbbbbbbbbbbbbb}bbbbilgili"
    • Sürüm: "0.4"

Her bir uzantıyı tek tek güncelleme isteği şöyle olur:

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

ve

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

Her benzersiz güncelleme URL'si için tek bir istekte birden fazla uzantı listelenebilir. Yukarıdaki örnekte, bir kullanıcıda uzantıların her ikisi de yüklüyse iki istek tek bir istekte birleştirilir:

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

Aynı güncelleme URL'sini kullanan yüklü uzantıların sayısı bir GET isteği URL'sinin çok uzun olmasına (2000'den fazla karakter) yetecek kadar büyükse güncelleme kontrolü, gerektiği şekilde ek GET istekleri gönderir.

Gelişmiş kullanım: minimum tarayıcı sürümü

Uzantı sistemine daha fazla API eklendikçe, bir uzantının yalnızca tarayıcının yeni sürümleriyle çalışacak güncellenmiş bir sürümü yayınlanabilir. Google Chrome otomatik olarak güncellense de, kullanıcı tabanının büyük çoğunluğunun yeni bir sürüme güncellenmesi birkaç gün sürebilir. Belirli bir güncellemenin yalnızca belirli bir sürümdeki veya daha sonraki Google Chrome sürümlerine uygulandığından emin olmak için güncelleme yanıtındaki öğesine "prodversionmin" özelliğini ekleyin.

<?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>

Bu şekilde, kullanıcılar yalnızca Google Chrome 3.0.193.0 veya sonraki bir sürümü kullanıyorsa sürüm 2'ye otomatik olarak güncelleme yapar.