Bir Google Chrome Uzantı Dosyasını doğrudan nasıl değiştiririm? (.CRX)


97

Bu uzantıların hangi dillerde olduğundan emin değilim, sanırım Html, Javascript veya JSON ile yazılmış. Bildiğim kadarıyla bir .CRX dosyasında "sıkıştırılmış".

Bir Chrome Uzantısının html, js, json'unu (veya kullandıkları herhangi bir dili) doğrudan değiştirmek mümkün mü?


Bunu anlamaya çalışırken çok zaman harcadım ve burada listelenen yaklaşımların çoğunu denedim. Mac kullanıyorsanız ve sıkıştırmayı açma çalışmıyorsa, Keka'yı indirip deneyin. 7-Zip tabanlı ücretsiz bir Mac yardımcı programıdır. CRX dosyasını yeniden adlandırmanıza gerek yoktur. Uygulamayı açın ve ardından CRX dosyanızı üzerine bırakın. İçeriği bir klasöre çıkaracaktır. keka.io
Trevor

Yanıtlar:


88

Google'da aradım ve şunu buldum:

Google Chrome Uzantısı dosya türü CRX'tir. Esasen bir sıkıştırma formatıdır. Dolayısıyla, bir uzantının, komut dosyalarının ve kodun arkasında ne olduğunu görmek istiyorsanız, sadece dosya türünü "CRX" den "ZIP" e değiştirin.

Dosyayı açın ve ihtiyacınız olan tüm bilgileri alacaksınız. Bu şekilde cesaretleri görebilir, bir uzantıyı kendiniz nasıl yazacağınızı öğrenebilir veya kendi ihtiyaçlarınız için onu değiştirebilirsiniz.

Ardından, dosyayı otomatik olarak CRX'e geri oluşturan Chrome'un dahili araçlarıyla yedekleyebilirsiniz. Yüklemek sadece bir tıklama gerektirir.


14
crx dosyasının sıkıştırılmış içerik geliştiricisinden
se_pavel

5
Dosyayı açtıktan sonra bir şey olur mu.zip.cpgz?
f01

7
Uzantıyı olarak crxolarak yeniden adlandırmak zipve üzerine tıklamak işe yaramaz. unzipKomut bile üzerinde çalışacak crxuzantısı.
iRonin

1
MacOS'ta CRX, dosya türünü "CRX" den "ZIP" e değiştirerek çıkarılamaz çünkü o zip dosyasını çıkarmaya çalıştığımda başka bir dosya oluşturur FileName.zip.cpgz
Ripon Kumar Saha

107

Yüklü Chrome uzantı dizinleri aşağıda listelenmiştir:

  1. Değiştirmek istediğiniz uzantının klasörünü kopyalayın. (Uzantı kimliğine göre adlandırılır, uzantının kimliğini bulmak için adresine gidin chrome://extensions/). Kopyalandıktan sonra _metadata klasörünü kaldırmanız gerekir.

  2. Gönderen chrome://extensionsiçinde Geliştirici modu seçme ... Yük paketlenmemiş uzantısı bu sürümü tarafından adlı bir alt klasör içeriyorsa ve Kopyalanan uzatma klasörü seçin bir bildirim dosyası vardır bu sürüm klasörü seçin, bu dosya Chrome için gereklidir.

  3. Değişikliklerinizi yapın, ardından değişikliklerinizi görmek için uzantınız için yeniden yüklemeyi seçin ve sayfayı yenileyin.


Chrome uzantısı dizinleri

Mac:

/Users/username/Library/Application Support/Google/Chrome/Default/Extensions

Windows 7:

C:\Users\username\AppData\Local\Google\Chrome\User Data\Default\Extensions

Windows XP:

C:\Documents and Settings\YourUserName\Local Settings\Application Data\Google\Chrome\User Data\Default

Ubuntu 14.04:

~/.config/google-chrome/Default/Extensions/

3
Bilginize, en azından Windows'ta, \Defaultuzantı konum yolundaki dizin, uzantının yüklendiği profile işaret eder. Chrome'da birden fazla profil kullanıyorsanız \Defaultvarsayılan profildir ve \Profile1oluşturulan ilk ek profildir.
HeatfanJohn

2
Uzantının kaynak koduna hızlı bir şekilde erişmek için bu Chrome uzantısına göz atın: chrome.google.com/webstore/detail/extension-source-locator/…
Shaihi

@Shaihi Sizin uzantınız olduğunu tahmin ediyorum. Bununla ilgili birkaç sorun var - en önemlisi, yeni sekmeyi ele geçirmesidir - ayrıca nullkullanıcı adı için geri döner , böylece kopyalanan yol çalışmaz - OS X kullanıyorum - harika bir fikir olsa da, sadece biraz ihtiyacı var iş. Ayrıca, Uzantılar ile uzantı kimliği arasındaki eğik çizgi eksik.
JDavis

@JDavis - girdiniz için teşekkürler! Bu benim ... Eğik çizgi düzeltildi - henüz Mac'i test etmedim: s Yeni sekmeyi ele geçirmeye gelince - bazı tıklamaları kurtaracağını düşünüyordum, ancak bir kez girdi aldığımda onu değiştirmeyi düşüneceğim.
Shaihi

1
Nerede klasör uzantısı kopyalarım için ? Onu başka bir yere kopyaladım ve "Paketlenmemiş uzantıları yükle ..." yi denediğimde, "Uzantı Yüklenirken Hata" aldım ... "Bildirim dosyası eksik veya okunamıyor".
jbyrd

46

İmzalı bir CRX dosyası, çoğu / tüm açıcıların tıkanmasına neden olacak bir başlık içerir. Bu, bunu yapmanın en kolay yolu değil, ama işte bunu bir bash komut satırından nasıl yapacağınız.

Temel fikir, orijinal imzasız zip dosyasının nerede başladığını bulmak, ardından CRX dosyasını bir zip dosyasına kopyalayıp CRX başlığını hariç tutmaktır.

  1. hexdump -C the_extension.crx | more
  2. ASCII bayt "PK" olan zip dosyasının başlangıcı için çıktıya bakın. Denediğim örnekte, PK 0x132 ofsetinde idi. (CRX spesifikasyonunu okurken, bu sayının farklı imza uzunlukları nedeniyle dosyadan dosyaya değişeceğini düşünüyorum.) Bu sayı, bir sonraki adımda kullanacağımız şeydir.
  3. dd if=the_extension.crx of=the_extension.zip bs=1 skip=0x132 (Atlama parametresi için, önceki adımda bulduğunuz ofseti değiştirin.)
  4. Şimdi az önce oluşturduğunuz .zip dosyasını açın.
  5. Sıkıştırılmamış dizindeki dosyalarla oynayın, ardından imzasız / paketlenmemiş uzantıyı Chrome kurulumunuza yükleyin ya da başka herhangi bir Chrome uzantısını yaptığınız gibi yeniden paketleyin.

Eminim bunu yapmanın daha kısa bir yolu vardır. Bash uzmanları, lütfen cevabımı geliştirin.


3
Harika bir ipucu! PK ofsetim de0x132
Stefan Schmidt

23
Aslında onu komut satırı yardımcı programıyla açabildim unzip. Başlığın ek 306 baytından şikayet etti, ancak yine de yaptı.
Lex R

2
unzipmükemmel çalışıyor:warning [YouTubeCenter.crx]: 304 extra bytes at beginning or within zipfile (attempting to process anyway)
Navin

hexdump için ofseti nasıl anlarsınız? Aşağıdaki satırı içeren pk00000230 63 d5 11 76 bf 9f 50 4b 03 04 14 00 08 08 08 00 |c..v..PK........|
kchoi

"Bash uzmanı" olarak uygun olup olmadığımı bilmiyorum ama bu benim için çalışıyor:webext="Downloads/Extension_v0.1.crx" dd if="$webext" of="${webext%.crx}.zip" bs=1 skip=$(hexdump "$webext" | awk '/50 4b/{a=$1; for(i=2;i<=NF;i++){if($i=="50" && $(i+1)=="4b"){print "0x"substr(a,0,6)i-2;exit}}}')
miken32

10

Bazı zip programlarının, sathish'in anlattığı gibi bir CRX'i açmada sorun yaşadığını unutmayın - bu durumda, 7-Zip - http://www.7-zip.org/ kullanmayı deneyin.


1
Woah! en azından görünüşte dosya uzantısını değiştirmek zorunda bile değilsin, 7-zip o kötü çocukla şehre gidiyor!
JKirchartz

Hayır, kesinlikle değil. .Crx'i.zip olarak yeniden adlandırdım ve 7-ZIP bana ZIP'i açamadığına dair bir hata veriyor.
Jez

3

Diğer cevapları okudum ve birkaç şeye daha dikkat etmenin önemli olduğunu gördüm:

1.) Mac kullanıcıları için: "Paketlenmemiş uzantıyı yükle ..." seçeneğini tıkladığınızda, Kitaplık klasörü varsayılan olarak gizlidir ve (Mac'inizde Gizli Dosyaları Göster seçeneği kapatılmış olsa bile) Chrome'un bulucu penceresinde görünmeyebilir .

2.) Uzantıyı içeren alt klasör, Geliştirici bayrağı doğru olarak ayarlanmışsa Chrome'un uzantı sayfasında bulunabilen uzantının kimliğinden sonra adlandırılan rastgele bir alfasayısal dizedir. (Uzantılar sayfasında sağ üstteki onay kutusu)


Öyleyse 1 numaranın çözümü nedir? Zaten gizli klasörleri gösteriyorum, ancak sizin de dediğiniz gibi, uzantı dizininin konumunu seçmeye çalışırken dizin görünmüyor.
o_O

@o_O - Bu uzun zaman oldu, ama ... işte şuraya gidin: macworld.com/article/2057221/…
jenming

3

(Daha önce söyledim) Bunu bazı Chrome temaları oluştururken buldum (şimdi çoktan gitti ... :-P)

Chrome temaları, uzantıları vb. Yalnızca sıkıştırılmış dosyalardır. Açmak için 7-zip veya WinRar alın . Her uzantı / temanın bir manifest.json dosyası vardır. Manifest.json dosyasını not defterinde açın. Ardından, kodlamayı biliyorsanız, kodu değiştirin. Başka dosyalar da olacak. Manifest dosyasına bakarsanız ne işe yaradığını anlayabilirsiniz. O zaman her şeyi değiştirebilirsin ...


2

.CRX dosyaları .ZIP dosyaları gibidir, sadece uzantıyı değiştirin ve sağ tıklayın> Dosyaları Çıkart ve bitirdiniz.

Dosyaları çıkardıktan sonra -> değiştirin ve zip'e ekleyin ve uzantıyı .crx olarak değiştirin.

Diğer bir yol -> Chrome'u Aç -> Ayarlar -> Uzantılar -> Geliştirici Seçeneklerini Etkinleştir -> Paketlenmemiş Uzantıları Yükle (değiştirilmiş ayıklanmış dosyalar klasörü) ve ardından paket uzantısını tıklayın.

Kaynak


2

Artık Chrome çok kullanıcılıdır, bu nedenle Extensionsişletim sistemi kullanıcı profilinin ve ardından Chrome kullanıcı profilinin altına yerleştirilmelidir, İlk Chrome kullanıcım çağrıldı Profile 1, Extensionsyolum idi C:\Users\ username \AppData\Local\Google\Chrome\User Data\ Profile 1 \Extensions\.

Seninkini bulmak için Git chrome://version/( about:Tembellikten kullanıyorum).

Dikkat edin Profile Pathve ekleyin \Extensions\ve sizinkini alın.

Umarım bu, bu soruya bu bilgiyi daha güncel hale getirir.


2

.CRX uzantısının kodunu değiştirmek mümkündür, çünkü bu basit bir .zip arşividir. Uzantıyı indirebilir, kaynak kodunu çıkarabilir, değiştirebilir (yanınızda olduğu gibi test edebilir ve hatalarını ayıklayabilirsiniz) ve .CRX dosyasına geri paketleyebilirsiniz.

CRX uzantısını indirmek ve kaynak kodunu çıkarmak için bu aracı araştırdım ve benim için çalıştı: http://crxextractor.com

Yaptığı her şey .CRX dosya biçimini ayrıştırır ve kaynak kodunu içeren gerçek .zip dosyasını çıkarır.


0

Chrome'un Taşınabilir sürümünü yüklediyseniz veya özel bir dizine kurduysanız, uzantılar yukarıdaki yanıtlarda belirtilen dizinde kullanılamayacaktır.

Chrome'un kısayolunu sağ tıklamayı deneyin ve "Hedef" dizini kontrol edin. Oradan, yukarıdaki bir dizine gidin ve User Dataklasörü görebilmeli ve ardından yukarıda belirtilen cevapları kullanmalısınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.