Firefox'ta Google veri sıkıştırma proxy'sini nasıl kullanırım?


20

Ben kullanıyorum GNU Icecat üzerinde (Mozilla Firefox GNU sürümünü) Trisquel GNU / Linux . Web'de gezinirken veri kullanımını en aza indirgemek / optimize etmek için Google'ın veri sıkıştırma proxy'sini kullanmak istiyorum .

Peki, Firefox'ta Google Veri Sıkıştırma Proxy'sini nasıl kullanırım?

Not / Tarih: Benim için bir çözüm elde etmek dolanıp durduğunu sorun . Cevap bir götürdü sohbet oda Sonunda buldum, yol .


1
wiki.mozilla.org/Mobile/Janus Janus'u github'dan alıp kendi hizmetinizi işletiyor musunuz?
ssnobody

code.google.com/p/datacompressionproxy Ayrıca yararlı bir kod da olabilir ...
ssnobody

1
Bir not olarak, doğrudan HTTP proxy'yi dvd.googlezip.net:80 veya 74.125.205.211:80 olarak ayarlamak beni Veri Sıkıştırma Proxy'sine bağladı, ancak şu sitelere yüklenemedi: "Bu sayfa Chrome Veri Sıkıştırma yoluyla yüklenemiyor Proxy. Sayfayı yeniden yüklemeyi deneyin. "
Proxy'nin

Proxy'nin aradığı belirli bir başlık Chrome-Proxy gibi görünüyor. Bu başlığı doğru şekilde oluşturmak için kod, yukarıda bağlanan veri sıkıştırma proxy'sinde background.js içinde.
ssnobody

Yanıtlar:


19

Google Chrome Veri Sıkıştırma Proxy'sini Chrome olmayan tarayıcılarda kullanmak iki adımdan oluşur.

  1. HTTP proxy'nizi proxy.googlezip.netve bağlantı noktası olarak ayarlayın 80.
  2. İsteklerinizin her biri için isteğinizi bir Chrome-Proxybaşlık hesaplayın ve enjekte edin.

Chrome-ProxyBaşlık şu dizeyi içermelidir: ps=<timestamp>-<num1>-<num2>-<num3>, sid=<md5 string>, b=<build>, p=<patch>, c=<platform>burada:

  • timestamp: unix döneminden bu yana geçen saniye sayısı
  • num1, num2, num3: olarak ayarlanabilen rastgele sayılardır 0
  • md5 dizesi: yetkilendirme dizesinin md5'i
  • auth string: " <timestamp>" + " <auth key>" + " <timestamp>"
  • yetkilendirme anahtarı: ac4500dd3b7579186c1b0620614fdb1f7d61f944
  • build: Chrome derleme numarası, olarak ayarlanabilir 2214
  • yama: Krom yama numarası, olarak ayarlanabilir 115
  • platform: Chrome platformu, " win" olarak ayarlanabilir

Başlığın tam bir örneği olarak sahip olabilirsiniz: Chrome-Proxy: ps=1439961190-0-0-0, sid=9fb96126616582c4be88ab7fe26ef593, b=2214, p=115, c=win

Şimdi, bunu pratik olarak uygulamak için, en kolay çözüm bir uzantı kullanmak olduğunu düşünüyorum, ancak zaten bu işlevselliğe sahip firefox için bir tane görünmüyor.

Bu nedenle, Firefox 38 veya sonraki sürümleri için Firefox'ta herkesin Google Chrome Veri Sıkıştırma Proxy'sini kullanmasına izin veren ve aşağıdaki kodu dahil ettiğim kendi firefox uzantımı uyguladım.

Aşağıdakileri, uzantıyı geliştirmek ve test etmek için kullandığım ve başkalarının uzantıyı sıfırdan yeniden oluşturmasına izin verdiğim prosedür.


  1. Alın ve yükleyin nodejs
  2. Kullan npmyüklemek için nodejs gelen jpmaracılığıylanpm install jpm

    Ubuntu paketinin bazı sürümleri geldiğini hatırlatırız nodeolarak nodejseğer öyleyse jpmbulamıyorum nodesen nodejs başka dağılımını yüklemek veya bir bağlantı oluşturmak gerekebilir nodeiçinnodejs

  3. Uzantı için ve cdiçine yeni bir dizin oluşturun

  4. jpm init
  5. Varsayılanları olan yanıt istemleri
  6. İndex.js dosyanızı aşağıdaki kodla değiştirin
  7. jpm run

    Eğer Not jpmstandart konumlarda firefox bulamadığını, ayrıca üzere -b bayrağı geçmeniz gerekir jpmtarayıcınızı bulmasını istediğiniz için. (ör. jpm run -b /path/to/Firefox/Nightly)

Artık bu yeni uzantı yüklendiğinde ve tüm trafik bu oturum sırasında Google Chrome Veri Sıkıştırma Proxy'si üzerinden proxy ile açık durumda olmalıdır.

Çünkü jpm rungeçici bir profil oluşturur, sen gerekir jpm run, proxy kullanan trafiğiniz gibi olur bu uzantı her zaman. Ayrıca jpm xpive Install Add-on From FileEklenti yöneticisinde de yapabilirsiniz.

Aşağıdakiler için yanıt başlıklarını inceleyerek veri vekalet doğrulayabildikten edebilirsiniz Viaverileri Chrome Sıkıştırma Proxy üzerinden gönderilen gösterir başlığında (örn Via: "1.1 Chrome-Compression-Proxy")

Sunucu yanıtlarında üstbilgiyi Content-Lengthüstbilgiyle karşılaştırarak ne kadar veri kaydettiğinizi belirleyebilirsiniz X-Original-Content-Length.


İndex.js kodu aşağıdaki gibidir:

/*
 * Data Compressor Proxy 0.0.1
 * License: MPL
 *
 * Based on
 * Data Compression Proxy Extension for Google Chrome on Desktop
 * (c) 2014 Jerzy Glowacki. License: Apache 2.0

 * and includes
 * JavaScript MD5 1.0.1
 * https://github.com/blueimp/JavaScript-MD5
 * Copyright 2011, Sebastian Tschan
 * https://blueimp.net
 * Licensed under the MIT license:
 * http://www.opensource.org/licenses/MIT
 *
 * JavaScript MD5 1.0.1 is Based on
 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
 * Digest Algorithm, as defined in RFC 1321.
 * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 * Distributed under the BSD License
 * See http://pajhome.org.uk/crypt/md5 for more info.
 */

var self = require('sdk/self');
var { Class } = require('sdk/core/heritage');
var { Unknown } = require('sdk/platform/xpcom');
var {Cc, Ci} = require("chrome");
var prefsvc = require("sdk/preferences/service");

var httpRequestObserver = Class(
{
  extends:  Unknown,
  interfaces: [ 'nsIObserver' ],
  topic: '*',
  observe: function(subject, topic, data)
  {
    if (topic == "http-on-modify-request") {
      var httpChannel = subject.QueryInterface(Ci.nsIHttpChannel);
      httpChannel.setRequestHeader("Chrome-Proxy", this.authHeader(), false);
    }
  },

  get observerService() {
    return Cc["@mozilla.org/observer-service;1"]
                     .getService(Ci.nsIObserverService);
  },

  authHeader : function() {
    var authValue = 'ac4500dd3b7579186c1b0620614fdb1f7d61f944';
    var timestamp = Date.now().toString().substring(0, 10);
    return 'ps=' + timestamp + '-' + '0' + '-' + '0' + '-' + '0' + ', sid=' + md5(timestamp + authValue + timestamp) + ', b=2214' + ', p=115' + ', c=win';
  },

  register: function()
  {
    this.observerService.addObserver(this, "http-on-modify-request", false);
  },

  unregister: function()
  {
    this.observerService.removeObserver(this, "http-on-modify-request");
  }
});

var httprequestobserver = httpRequestObserver();
httprequestobserver.register();
prefsvc.set("network.proxy.http", "proxy.googlezip.net");
prefsvc.set("network.proxy.http_port", 80);
prefsvc.set("network.proxy.type", 1);

!function(a){"use strict";function b(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function c(a,b){return a<<b|a>>>32-b}function d(a,d,e,f,g,h){return b(c(b(b(d,a),b(f,h)),g),e)}function e(a,b,c,e,f,g,h){return d(b&c|~b&e,a,b,f,g,h)}function f(a,b,c,e,f,g,h){return d(b&e|c&~e,a,b,f,g,h)}function g(a,b,c,e,f,g,h){return d(b^c^e,a,b,f,g,h)}function h(a,b,c,e,f,g,h){return d(c^(b|~e),a,b,f,g,h)}function i(a,c){a[c>>5]|=128<<c%32,a[(c+64>>>9<<4)+14]=c;var d,i,j,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(d=0;d<a.length;d+=16)i=m,j=n,k=o,l=p,m=e(m,n,o,p,a[d],7,-680876936),p=e(p,m,n,o,a[d+1],12,-389564586),o=e(o,p,m,n,a[d+2],17,606105819),n=e(n,o,p,m,a[d+3],22,-1044525330),m=e(m,n,o,p,a[d+4],7,-176418897),p=e(p,m,n,o,a[d+5],12,1200080426),o=e(o,p,m,n,a[d+6],17,-1473231341),n=e(n,o,p,m,a[d+7],22,-45705983),m=e(m,n,o,p,a[d+8],7,1770035416),p=e(p,m,n,o,a[d+9],12,-1958414417),o=e(o,p,m,n,a[d+10],17,-42063),n=e(n,o,p,m,a[d+11],22,-1990404162),m=e(m,n,o,p,a[d+12],7,1804603682),p=e(p,m,n,o,a[d+13],12,-40341101),o=e(o,p,m,n,a[d+14],17,-1502002290),n=e(n,o,p,m,a[d+15],22,1236535329),m=f(m,n,o,p,a[d+1],5,-165796510),p=f(p,m,n,o,a[d+6],9,-1069501632),o=f(o,p,m,n,a[d+11],14,643717713),n=f(n,o,p,m,a[d],20,-373897302),m=f(m,n,o,p,a[d+5],5,-701558691),p=f(p,m,n,o,a[d+10],9,38016083),o=f(o,p,m,n,a[d+15],14,-660478335),n=f(n,o,p,m,a[d+4],20,-405537848),m=f(m,n,o,p,a[d+9],5,568446438),p=f(p,m,n,o,a[d+14],9,-1019803690),o=f(o,p,m,n,a[d+3],14,-187363961),n=f(n,o,p,m,a[d+8],20,1163531501),m=f(m,n,o,p,a[d+13],5,-1444681467),p=f(p,m,n,o,a[d+2],9,-51403784),o=f(o,p,m,n,a[d+7],14,1735328473),n=f(n,o,p,m,a[d+12],20,-1926607734),m=g(m,n,o,p,a[d+5],4,-378558),p=g(p,m,n,o,a[d+8],11,-2022574463),o=g(o,p,m,n,a[d+11],16,1839030562),n=g(n,o,p,m,a[d+14],23,-35309556),m=g(m,n,o,p,a[d+1],4,-1530992060),p=g(p,m,n,o,a[d+4],11,1272893353),o=g(o,p,m,n,a[d+7],16,-155497632),n=g(n,o,p,m,a[d+10],23,-1094730640),m=g(m,n,o,p,a[d+13],4,681279174),p=g(p,m,n,o,a[d],11,-358537222),o=g(o,p,m,n,a[d+3],16,-722521979),n=g(n,o,p,m,a[d+6],23,76029189),m=g(m,n,o,p,a[d+9],4,-640364487),p=g(p,m,n,o,a[d+12],11,-421815835),o=g(o,p,m,n,a[d+15],16,530742520),n=g(n,o,p,m,a[d+2],23,-995338651),m=h(m,n,o,p,a[d],6,-198630844),p=h(p,m,n,o,a[d+7],10,1126891415),o=h(o,p,m,n,a[d+14],15,-1416354905),n=h(n,o,p,m,a[d+5],21,-57434055),m=h(m,n,o,p,a[d+12],6,1700485571),p=h(p,m,n,o,a[d+3],10,-1894986606),o=h(o,p,m,n,a[d+10],15,-1051523),n=h(n,o,p,m,a[d+1],21,-2054922799),m=h(m,n,o,p,a[d+8],6,1873313359),p=h(p,m,n,o,a[d+15],10,-30611744),o=h(o,p,m,n,a[d+6],15,-1560198380),n=h(n,o,p,m,a[d+13],21,1309151649),m=h(m,n,o,p,a[d+4],6,-145523070),p=h(p,m,n,o,a[d+11],10,-1120210379),o=h(o,p,m,n,a[d+2],15,718787259),n=h(n,o,p,m,a[d+9],21,-343485551),m=b(m,i),n=b(n,j),o=b(o,k),p=b(p,l);return[m,n,o,p]}function j(a){var b,c="";for(b=0;b<32*a.length;b+=8)c+=String.fromCharCode(a[b>>5]>>>b%32&255);return c}function k(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b<c.length;b+=1)c[b]=0;for(b=0;b<8*a.length;b+=8)c[b>>5]|=(255&a.charCodeAt(b/8))<<b%32;return c}function l(a){return j(i(k(a),8*a.length))}function m(a,b){var c,d,e=k(a),f=[],g=[];for(f[15]=g[15]=void 0,e.length>16&&(e=i(e,8*a.length)),c=0;16>c;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=i(f.concat(k(b)),512+8*b.length),j(i(g.concat(d),640))}function n(a){var b,c,d="0123456789abcdef",e="";for(c=0;c<a.length;c+=1)b=a.charCodeAt(c),e+=d.charAt(b>>>4&15)+d.charAt(15&b);return e}function o(a){return unescape(encodeURIComponent(a))}function p(a){return l(o(a))}function q(a){return n(p(a))}function r(a,b){return m(o(a),o(b))}function s(a,b){return n(r(a,b))}function t(a,b,c){return b?c?r(b,a):s(b,a):c?p(a):q(a)}"function"==typeof define&&define.amd?define(function(){return t}):a.md5=t}(this);

3
. Nodesource tercih sebebim -. Belirterek şey değerinde ubuntu 14.04 (ve Trisquel üzerine bu konuda bir ideolojik saf varyant, düğüm komut nodejs değil düğüm ben sonuç olarak alternatif repo daha yeni bir sürümünü kullanıyor tavsiye eğiliminde olduğunu olmasıdır
Journeyman Geek

1
Sonunda Trisquel GNU / Linux üzerinde Abrowser 38 üzerinde iyi çalışıyor
Pandya


Kullan jpm xpibunu bir XPI inşa etmek ve yüklemek için.
ssnobody

@ssnobody teşekkürler; cevabında daha önce bahsetmiştin ama özledim!
Pandya

7

Artık Mozilla Eklentileri web sitesinde yayınlanan bir Google DataSaver Firefox proxy'si var .

Firefox için Google veri sıkıştırma proxy'si - Firefox için DataSaver özelliğini etkinleştirir


Her kim yaptıysa, yukarıda gönderdiğim kodu kullandı, ancak özel tarama desteği ve beyaz liste gibi çeşitli iyileştirmeler yaptı. Çok hoş!
ssnobody
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.