Làm cách nào để sửa đổi trực tiếp Tệp Tiện ích mở rộng Google Chrome? (.CRX)


96

Tôi không chắc những phần mở rộng đó được viết bằng ngôn ngữ nào, tôi nghĩ chúng được viết bằng Html, Javascript hoặc JSON. Theo như tôi biết chúng được "nén" trong một tệp .CRX.

Có thể sửa đổi trực tiếp html, js, json của Tiện ích mở rộng Chrome (hoặc bất kỳ ngôn ngữ nào họ sử dụng) không?


Tôi đã lãng phí rất nhiều thời gian để tìm ra điều này và tôi đã thử nhiều cách tiếp cận được liệt kê ở đây. Nếu bạn đang sử dụng máy Mac và việc giải nén không hoạt động, hãy tải xuống và thử Keka. Nó là một tiện ích Mac miễn phí dựa trên 7-Zip. Không cần đổi tên tệp CRX. Mở ứng dụng và sau đó thả tệp CRX của bạn vào đó. Nó sẽ giải nén nội dung vào một thư mục. keka.io
Trevor

Câu trả lời:


87

Tôi đã tìm kiếm nó trên Google và tôi thấy điều này:

Loại tệp Tiện ích mở rộng của Google Chrome là CRX. Về cơ bản nó là một định dạng nén. Vì vậy, nếu bạn muốn xem những gì đằng sau một tiện ích mở rộng, các tập lệnh và mã, chỉ cần thay đổi loại tệp từ “CRX” thành “ZIP”.

Giải nén tệp và bạn sẽ nhận được tất cả thông tin bạn cần. Bằng cách này, bạn có thể thấy được các ý tưởng, tìm hiểu cách tự viết tiện ích mở rộng hoặc sửa đổi nó theo nhu cầu của riêng bạn.

Sau đó, bạn có thể đóng gói nó sao lưu bằng các công cụ nội bộ của Chrome, công cụ này sẽ tự động tạo tệp trở lại CRX. Cài đặt nó chỉ cần một cú nhấp chuột.


14
tập tin crx có thêm một header trước khi nội dung được nén developer.chrome.com/extensions/crx.html
se_pavel

5
Sau khi giải nén tệp sẽ trở thành cái gì đó.zip.cpgz?
f01

7
Đổi tên tiện ích mở rộng từ crxthành zipvà nhấp vào nó sẽ không hoạt động. các unziplệnh sẽ làm việc ngay cả trên crxphần mở rộng.
iRonin

1
Trong hệ điều hành MacOS, CRX không thể được tách ra bằng cách thay đổi các tập tin kiểu từ “CRX” thành “ZIP” bởi vì khi tôi cố gắng trích xuất file zip nó thực hiện một tập tin FileName.zip.cpgz
Ripon Kumar Saha

106

Các thư mục tiện ích mở rộng Chrome đã cài đặt được liệt kê bên dưới:

  1. Sao chép thư mục của tiện ích mở rộng bạn muốn sửa đổi. (Đặt tên theo ID tiện ích mở rộng, để tìm ID của tiện ích mở rộng, hãy truy cập chrome://extensions/). Sau khi sao chép, bạn phải xóa thư mục _metadata.

  2. Từ chrome://extensionstrong chế độ Nhà phát triển, chọn Tải tiện ích mở rộng đã giải nén ... và chọn thư mục tiện ích mở rộng đã sao chép của bạn, nếu nó chứa thư mục con được đặt tên theo phiên bản, hãy chọn thư mục phiên bản này nơi có tệp kê khai, tệp này cần thiết cho Chrome.

  3. Thực hiện các thay đổi của bạn, sau đó chọn tải lại và làm mới trang cho tiện ích mở rộng của bạn để xem các thay đổi của bạn.


Thư mục tiện ích mở rộng của Chrome

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
FYI, ít nhất là trên Windows, \Defaultthư mục trong đường dẫn vị trí của tiện ích mở rộng trỏ đến cấu hình mà tiện ích mở rộng được cài đặt. Nếu bạn sử dụng nhiều cấu hình trong Chrome \Defaultthì đây là cấu hình mặc định và \Profile1là cấu hình bổ sung đầu tiên được tạo.
HeatfanJohn

2
Hãy xem tiện ích mở rộng chrome này để nhanh chóng truy cập mã nguồn của tiện ích mở rộng: chrome.google.com/webstore/detail/extension-source-locator/…
Shaihi

@Shaihi Tôi đoán rằng đó là tiện ích mở rộng của bạn. Có một vài vấn đề với nó - quan trọng nhất là nó chiếm quyền điều khiển tab mới - ngoài ra, nó trả về nulltên người dùng nên đường dẫn đã sao chép không hoạt động - tôi đang sử dụng OS X - tuy nhiên, ý kiến ​​hay đấy, nó chỉ cần một chút công việc. Ngoài ra, dấu gạch chéo giữa Tiện ích mở rộng và id tiện ích mở rộng bị thiếu.
JDavis

@JDavis - cảm ơn vì đầu vào! Nó là của tôi ... Đã sửa lỗi gạch chéo - chưa thử nghiệm Mac: s Đối với việc chiếm quyền điều khiển tab mới - tôi đã nghĩ rằng nó sẽ tiết kiệm một số nhấp chuột, nhưng khi tôi nhận được một số đầu vào, tôi sẽ xem xét thay đổi nó.
Shaihi

1
Chúng tôi sao chép thư mục mở rộng vào đâu? Tôi đã sao chép nó sang một vị trí khác và khi cố gắng "Tải tiện ích mở rộng đã giải nén ...", tôi gặp "Lỗi khi tải tiện ích mở rộng" ... "Tệp kê khai bị thiếu hoặc không thể đọc được".
jbyrd

45

Tệp CRX đã ký có tiêu đề sẽ khiến hầu hết / tất cả các trình giải nén bị chặn. Đây không phải là cách dễ nhất để thực hiện nó, nhưng đây là cách thực hiện nó từ một dòng lệnh bash.

Ý tưởng cơ bản là tìm nơi bắt đầu của tệp zip không dấu ban đầu, sau đó sao chép tệp CRX vào tệp zip nhưng loại trừ tiêu đề CRX.

  1. hexdump -C the_extension.crx | more
  2. Tìm đầu ra để biết phần bắt đầu của tệp zip, là các byte ASCII "PK". Trong mẫu tôi đã thử, PK ở độ lệch 0x132. (Từ việc đọc thông số CRX, tôi nghĩ con số này sẽ khác nhau giữa các tệp do độ dài chữ ký khác nhau.) Con số đó là những gì chúng ta sẽ sử dụng trong bước tiếp theo.
  3. dd if=the_extension.crx of=the_extension.zip bs=1 skip=0x132 (Đối với tham số bỏ qua, hãy thay thế phần bù mà bạn đã tìm thấy ở bước trước.)
  4. Bây giờ giải nén .zip mà bạn vừa tạo.
  5. Giải nén các tệp trong thư mục đã giải nén, sau đó cài đặt tiện ích mở rộng chưa ký / chưa giải nén vào cài đặt Chrome của bạn hoặc nếu không thì đóng gói lại nó giống như bạn làm với bất kỳ tiện ích mở rộng Chrome nào khác.

Tôi chắc chắn rằng có một cách ngắn gọn hơn để làm điều này. Chuyên gia bash, vui lòng cải thiện câu trả lời của tôi.


3
Gợi ý tuyệt vời! Phần bù PK của tôi cũng là0x132
Stefan Schmidt,

21
Tôi thực sự đã có thể giải nén nó bằng tiện ích dòng lệnh unzip. Nó phàn nàn về 306 byte bổ sung của tiêu đề, nhưng vẫn làm được.
Lex R

2
unziphoạt động hoàn hảo:warning [YouTubeCenter.crx]: 304 extra bytes at beginning or within zipfile (attempting to process anyway)
Navin

làm thế nào để bạn tìm ra sự bù đắp cho hexdump? Tôi có dòng sau chứa pk00000230 63 d5 11 76 bf 9f 50 4b 03 04 14 00 08 08 08 00 |c..v..PK........|
kchoi

Tôi không biết nếu tôi hội đủ điều kiện như là một "chuyên gia Bash" nhưng công trình này cho tôi: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

9

Lưu ý rằng một số chương trình zip gặp sự cố khi giải nén CRX như sathish đã mô tả - nếu đúng như vậy, hãy thử sử dụng 7-Zip - http://www.7-zip.org/


1
Chà! ít nhất trên vista, bạn thậm chí không phải thay đổi phần mở rộng tệp, 7-zip chỉ cần đi đến thị trấn trên cậu bé xấu đó!
JKirchartz

Không, chắc chắn là không. Tôi đã đổi tên .crx thành.zip và 7-ZIP cho tôi một lỗi không thể mở ZIP.
Jez

2

Tôi đã đọc các câu trả lời khác và nhận thấy điều quan trọng cần lưu ý một số điều khác:

1.) Đối với người dùng Mac: Khi bạn nhấp vào "Tải tiện ích mở rộng đã giải nén ...", thư mục Thư viện theo mặc định bị ẩn và (ngay cả khi tùy chọn Hiển thị tệp ẩn được bật trên máy Mac của bạn), nó có thể không hiển thị trong cửa sổ công cụ tìm kiếm của Chrome .

2.) Thư mục con chứa tiện ích mở rộng là một chuỗi chữ-số ngẫu nhiên được đặt tên theo ID của tiện ích mở rộng, có thể được tìm thấy trên trang tiện ích mở rộng của Chrome nếu cờ Nhà phát triển được đặt thành true. (Hộp kiểm phía trên bên phải trên trang tiện ích mở rộng)


Vậy giải pháp cho # 1 là gì? Tôi đã hiển thị các thư mục ẩn nhưng như bạn nói, thư mục không hiển thị khi cố gắng chọn vị trí của thư mục mở rộng.
o_O

@o_O - Điều này đã được một thời gian dài sắp tới, nhưng ... đây ya đi: macworld.com/article/2057221/...
jenming

2

(Đã nói) Tôi phát hiện ra điều này khi tạo một số chủ đề Chrome (hiện đã biến mất từ ​​lâu ... :-P)

Các chủ đề, tiện ích mở rộng, v.v. của Chrome chỉ là các tệp nén. Nhận 7-zip hoặc WinRar để giải nén nó. Mỗi phần mở rộng / chủ đề có một tệp manifest.json. Mở tệp manifest.json trong notepad. Sau đó, nếu bạn biết mã hóa, hãy sửa đổi mã. Sẽ có một số tệp khác. Nếu bạn nhìn vào tệp kê khai, bạn có thể tìm ra nó để làm gì. Sau đó, bạn có thể thay đổi mọi thứ ...


1

Các tệp .CRX giống như tệp .ZIP, chỉ cần thay đổi phần mở rộng và nhấp chuột phải> Giải nén Tệp và bạn đã hoàn tất.

Khi bạn đã giải nén các tệp -> sửa đổi chúng và thêm vào zip và thay đổi phần mở rộng trở lại .crx.

Ngược lại -> Mở Chrome -> Cài đặt -> Tiện ích mở rộng -> Bật Tùy chọn nhà phát triển -> Tải Tiện ích mở rộng đã giải nén (thư mục tệp đã giải nén đã sửa đổi) và sau đó nhấp vào tiện ích mở rộng gói.

Nguồn


1

Giờ đây, Chrome là nhiều người dùng, do đó, Extensionsnên được lồng trong hồ sơ người dùng OS sau đó là hồ sơ người dùng Chrome, Người dùng Chrome đầu tiên của tôi đã được gọi Profile 1, Extensionsđường dẫn của tôi làC:\Users\ username \AppData\Local\Google\Chrome\User Data\ Profile 1 \Extensions\ .

Để tìm của bạn Điều hướng đến chrome://version/(Tôi sử dụng about:vì lười biếng).

Chú ý Profile Pathvà chỉ thêm vào \Extensions\và bạn có của bạn.

Hy vọng điều này mang lại thông tin về câu hỏi này được cập nhật nhiều hơn.


1

Có thể sửa đổi mã của phần mở rộng .CRX, vì đây là một kho lưu trữ .zip đơn giản. Bạn có thể tải xuống tiện ích mở rộng, trích xuất mã nguồn của nó, sửa đổi nó (kiểm tra và gỡ lỗi nó khi nó ở bên bạn) và đóng gói lại thành tệp .CRX.

Tôi đã tìm ra công cụ này để chỉ cần tải xuống phần mở rộng .CRX và trích xuất mã nguồn và nó hoạt động với tôi: http://crxextractor.com

Mọi thứ nó làm là phân tích cú pháp định dạng tệp .CRX và trích xuất .zip thực có chứa mã nguồn.


0

Nếu bạn đã cài đặt phiên bản Di động của Chrome hoặc đã cài đặt nó trong một thư mục tùy chỉnh - thì các tiện ích mở rộng sẽ không khả dụng trong thư mục được tham chiếu trong các câu trả lời ở trên.

Thử nhấp chuột phải vào phím tắt của Chrome & Kiểm tra thư mục "Target". Từ đó, điều hướng đến một thư mục ở trên và bạn sẽ có thể xem User Datathư mục và sau đó có thể sử dụng các câu trả lời được đề cập ở trên

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.