मैं फ़ायरफ़ॉक्स पर Google डेटा संपीड़न प्रॉक्सी का उपयोग कैसे करूं?


20

मैं ट्रिसक्यूएल जीएनयू / लिनक्स पर जीएनयू आइसकैट (मोज़िला फ़ायरफ़ॉक्स का जीएनयू संस्करण) का उपयोग कर रहा हूं । वेब सर्फिंग के दौरान डेटा उपयोग को कम करने / अनुकूलित करने के लिए, मैं Google के डेटा संपीड़न प्रॉक्सी का उपयोग करना चाहता हूं ।

तो, मैं फ़ायरफ़ॉक्स पर Google डेटा संपीड़न प्रॉक्सी का उपयोग कैसे करूं?

नोट / इतिहास: मैं अपनी समस्या का समाधान पाने के लिए इधर-उधर भटक रहा था । उत्तर मुझे एक करने के लिए लाया चैट-रूम है, जहां मैं अंत में एक पाया जिस तरह से


1
wiki.mozilla.org/Mobile/Janus जीथस से जानूस पकड़ो और अपनी खुद की सेवा चलाओ ?
1

code.google.com/p/datacompressionproxy उपयोगी कोड भी हो सकता है ...
ssnobody

1
एक नोट के रूप में, सीधे HTTP प्रॉक्सी को compress.googlezip.net:80 या 74.125.205.211:80 पर सेट करना मुझे डेटा संपीड़न प्रॉक्सी से कनेक्ट करता है, लेकिन मैं इसके साथ किसी भी साइट को लोड करने में असमर्थ था: "यह पृष्ठ क्रोम डेटा संपीड़न के माध्यम से लोड नहीं किया जा सकता है प्रॉक्सी। पृष्ठ को पुनः लोड करने का प्रयास करें। " मुझे लगता है कि प्रॉक्सी कुछ क्रोम-विशिष्ट हेडर के लिए जाँच कर सकता है ...
ssnobody

ऐसा लगता है कि प्रॉक्सी जिस विशिष्ट शीर्षलेख की तलाश में है वह क्रोम-प्रॉक्सी है। उस हेडर को सही तरीके से जनरेट करने के लिए कोड ऊपर लिंक किए गए datacompressionproxy में background.js के भीतर है।
ssnobody

जवाबों:


19

गैर-क्रोम ब्राउज़र पर Google Chrome डेटा संपीड़न प्रॉक्सी का उपयोग करना दो चरणों में शामिल है।

  1. अपने HTTP प्रॉक्सी को proxy.googlezip.netऔर पोर्ट पर सेट करें 80
  2. आपके प्रत्येक अनुरोध के लिए, Chrome-Proxyअपने अनुरोध में हेडर की गणना करें और उसे इंजेक्ट करें।

Chrome-Proxyशीर्ष लेख निम्न स्ट्रिंग शामिल करना चाहिए: ps=<timestamp>-<num1>-<num2>-<num3>, sid=<md5 string>, b=<build>, p=<patch>, c=<platform>जहां:

  • टाइमस्टैम्प: यूनिक्स युग के बाद से बीते हुए सेकंड की वर्तमान संख्या है
  • num1, num2, num3: यादृच्छिक संख्याएँ हैं जिन्हें सेट किया जा सकता है 0
  • md5 स्ट्रिंग: ऑरल स्ट्रिंग का md5 है
  • मौखिक स्ट्रिंग: " <timestamp>" + " <auth key>" + " <timestamp>"
  • प्रमाणन कुंजी: ac4500dd3b7579186c1b0620614fdb1f7d61f944
  • बिल्ड: क्रोम बिल्ड नंबर, के लिए सेट किया जा सकता है 2214
  • पैच: क्रोम पैच नंबर, पर सेट किया जा सकता है 115
  • प्लेटफ़ॉर्म: क्रोम प्लेटफ़ॉर्म, " win" पर सेट किया जा सकता है

हेडर के पूर्ण उदाहरण के रूप में आपके पास हो सकता है: Chrome-Proxy: ps=1439961190-0-0-0, sid=9fb96126616582c4be88ab7fe26ef593, b=2214, p=115, c=win

अब, इसे व्यावहारिक रूप से लागू करने के लिए, मुझे लगता है कि सबसे आसान समाधान एक विस्तार का उपयोग करना है, लेकिन फ़ायरफ़ॉक्स के लिए एक ऐसा प्रतीत नहीं होता है जिसमें पहले से ही यह कार्यक्षमता है।

इसलिए, मैंने फ़ायरफ़ॉक्स संस्करण 38 या इसके बाद के संस्करण के लिए अपना स्वयं का फ़ायरफ़ॉक्स एक्सटेंशन लागू किया है जो किसी को भी फ़ायरफ़ॉक्स पर Google Chrome डेटा संपीड़न प्रॉक्सी का उपयोग करने की अनुमति देता है और नीचे दिए गए कोड सहित।

निम्नलिखित वह प्रक्रिया है जिसे मैं विस्तार को विकसित करने और परीक्षण करने के लिए उपयोग करता था, और दूसरों को खरोंच से विस्तार को पुन: उत्पन्न करने की अनुमति देता था।


  1. प्राप्त करें और स्थापित करें nodejs
  2. के माध्यम npmसे स्थापित करने के लिए नोडज से उपयोग करेंjpmnpm install jpm

    ध्यान दें कि उबंटू पैकेज के कुछ संस्करणों nodeके रूप में nodejsयदि ऐसा है तो jpmनहीं मिल सकता है nodeआप NodeJS का एक और वितरण स्थापित या के लिए एक लिंक बनाने के लिए आवश्यकता हो सकती है nodeके लिएnodejs

  3. एक्सटेंशन के लिए और cdइसमें एक नई निर्देशिका बनाएं

  4. jpm init
  5. उत्तर चूक के साथ संकेत देता है
  6. नीचे दिए गए कोड के साथ अपने index.js को बदलें
  7. jpm run

    ध्यान दें कि यदि jpmमानक स्थानों में फ़ायरफ़ॉक्स को खोजने में असमर्थ हैं, तो आपको यह jpmबताने के लिए -b फ़्लैग पास करना होगा कि वह आपके ब्राउज़र को कहाँ खोजेगा । (उदा jpm run -b /path/to/Firefox/Nightly)

अब आपको इस सत्र के दौरान Google Chrome डेटा संपीड़न प्रॉक्सी के माध्यम से लोड किए गए सभी नए एक्सटेंशन के साथ फ़ायरफ़ॉक्स खुला होना चाहिए।

क्योंकि jpm runएक अस्थायी प्रोफ़ाइल बनाता है, तो आपको jpm runइस एक्सटेंशन की आवश्यकता होगी जब भी आप अपना ट्रैफ़िक सम्‍पन्‍न करना चाहते हैं। आप यह भी कर सकते थे jpm xpiऔर Install Add-on From Fileऐड-ऑन प्रबंधक में।

आप यह सत्यापित कर सकते हैं कि आपके डेटा को हेडर के लिए प्रतिक्रिया हेडर की जांच करके अनुमानित किया जा रहा है Viaजो क्रोम संपीड़न प्रॉक्सी (उदा Via: "1.1 Chrome-Compression-Proxy") पर भेजे जा रहे डेटा को इंगित करता है

आप यह निर्धारित कर सकते हैं कि Content-Lengthहेडर की तुलना X-Original-Content-Lengthहेडर से सर्वर प्रतिक्रियाओं में आप कितना डेटा बचा रहे हैं ।


Index.js के लिए कोड इस प्रकार है:

/*
 * 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
कुछ ध्यान देने योग्य बात यह है कि ubuntu 14.04 पर (और trisquel इस पर एक वैचारिक रूप से शुद्ध रूप है, नोड कमांड नोड नहीं है। मैं एक वैकल्पिक रेपो पर एक नए संस्करण का उपयोग करने की सलाह देता हूं, परिणामस्वरूप - nodesource वह है जो मैं पक्ष में हूं।
जर्नीमैन गीक

1
अंत में यह Trisquel GNU / Linux पर Abrowser 38 पर अच्छी तरह से काम करता है
पंड्या

क्या आप वहां
पंड्या 10

jpm xpiएक XPI बनाने और इसे स्थापित करने के लिए उपयोग करें ।
ssnobody

@ कोई भी धन्यवाद नहीं; आपने पहले ही अपने उत्तर में उल्लेख कर दिया है, लेकिन मैं इससे चूक गया!
पंड्या 7

7

अब मोज़िला एड-ऑन वेबसाइट में फ़ायरफ़ॉक्स एक्सटेंशन के लिए एक Google डेटास्वर प्रॉक्सी है

फ़ायरफ़ॉक्स के लिए Google डेटा संपीड़न प्रॉक्सी फ़ायरफ़ॉक्स के लिए डेटासेवर सुविधा को सक्षम करता है


जिसने भी इसे बनाया है, मैंने ऊपर पोस्ट किए गए कोड का उपयोग किया लेकिन निजी ब्राउज़िंग समर्थन और श्वेत सूची जैसे कई सुधार किए। बहुत अच्छा!
ssnobody
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.