如何以编程方式(最好是使用Java)创建Chrome扩展文件(crx文件)?

365平台是做什么的 2026-01-16 06:14:09 admin 8703 593
如何以编程方式(最好是使用Java)创建Chrome扩展文件(crx文件)?

我需要用Ruby来完成这个任务。JavaHead的答案看起来适用于CRX2的Java版本。当前格式是CRX v3,头部基于protobuf。我写了一篇关于如何使用Ruby打包扩展的博客。还有另一位作者的Python项目。

我将在此提供打包扩展的CRX2和CRX3方法的Ruby版本作为参考。完整代码请参见我的博客。

因此,CRX3方法:

def self.header_v3_extension(zipdata, key: nil)

key ||= OpenSSL::PKey::RSA.generate(2048)

digest = OpenSSL::Digest.new('sha256')

signed_data = Crx_file::SignedData.new

signed_data.crx_id = digest.digest(key.public_key.to_der)[0...16]

signed_data = signed_data.encode

signature_data = String.new(encoding: "ASCII-8BIT")

signature_data << "CRX3 SignedData\00"

signature_data << [ signed_data.size ].pack("V")

signature_data << signed_data

signature_data << zipdata

signature = key.sign(digest, signature_data)

proof = Crx_file::AsymmetricKeyProof.new

proof.public_key = key.public_key.to_der

proof.signature = signature

header_struct = Crx_file::CrxFileHeader.new

header_struct.sha256_with_rsa = [proof]

header_struct.signed_header_data = signed_data

header_struct = header_struct.encode

header = String.new(encoding: "ASCII-8BIT")

header << "Cr24"

header << [ 3 ].pack("V") # version

header << [ header_struct.size ].pack("V")

header << header_struct

return header

end

出于历史目的(这个已经验证)CRX2:

# @note original crx2 format description https://web.archive.org/web/20180114090616/https://developer.chrome.com/extensions/crx

def self.header_v2_extension(zipdata, key: nil)

key ||= OpenSSL::PKey::RSA.generate(2048)

digest = OpenSSL::Digest.new('sha1')

header = String.new(encoding: "ASCII-8BIT")

signature = key.sign(digest, zipdata)

signature_length = signature.length

pubkey_length = key.public_key.to_der.length

header << "Cr24"

header << [ 2 ].pack("V") # version

header << [ pubkey_length ].pack("V")

header << [ signature_length ].pack("V")

header << key.public_key.to_der

header << signature

return header

end

我使用了优秀的服务crx-checker来验证v2和v3扩展包。在这里,我得到了预期的RSASSA-PKCS1-v1_5签名标记为(Signature OK) (Developer Signature)。

如果您尝试从URL添加到浏览器中,该扩展将因缺少Google签名而无法加载,并显示CRX_REQUIRED_PROOF_MISSING。但是,在运行测试时,Selenium可以正常加载它。要正常加载,您需要在Web商店上发布。

相关推荐

365bet娱乐注册 战袍的荣誉——盘点中国队历届球衣

战袍的荣誉——盘点中国队历届球衣

📅 08-10 👁️ 3063
365平台是做什么的 如何qq号注册微信

如何qq号注册微信

📅 07-12 👁️ 3145
28365365体育 苹果手机怎么插卡

苹果手机怎么插卡

📅 07-05 👁️ 6036