Küsimus:
Firefox Quantum Androidile - varundusprofiil ilma juureta?
Zowayix
2017-12-30 05:59:43 UTC
view on stackexchange narkive permalink

Kuidas saan oma profiili varundada mõnda muusse kohta Firefox Quantum Androidile (juurdumata telefonis)? See oleks lihtne, kui mu telefon oleks juurdunud (minge lihtsalt otse kaustale juurde ja kopeerige see mujale), kuid see ei ole juurdunud.

Olen proovinud palju erinevaid asju, millest mõned on saanud väga heaks masendavalt lähedal, kuid miski pole toiminud:

  • Kasutades sellist rakendust nagu Helium Backup, mis kasutab rakenduse andmete varundamiseks adb-d. See töötab mõnes rakenduses, kuid Firefoxi jaoks annab see mulle dialoogiboksi "Varundamine on keelatud", kus on kiri "Firefox on keelanud rakenduse andmete varundamise. Jätke Firefoxi arendajale kommentaar ja paluge neil lubada rakenduse andmete varundamine."

  • Brauseri abil navigeerimine profiilikataloogi ja katse sealt üksusi alla laadida. Ma näen oma profiili selgelt, minnes faili: ///data/data/org.mozilla.firefox/files/mozilla/r3dact3d.default/ ja teoreetiliselt sai üksikuid faile piisavalt aja jooksul alla laadida. Kuid proovige midagi avada lihtsalt navigeerida. See töötab ".ini" tekstifailide puhul, kuna saan sisu käsitsi kopeerida + kleepida, kuid mitte binaarfailide puhul (nagu ülitähtis brauser.db), mis avavad alati tühja lehe.

  • Tehes ülaltoodut, kuid kasutasin USB-silumist ja avasin oma sülearvuti Firefoxis WebIDE'i, et seda teha. Ma võin käivitada meelevaldse Javascripti lehel, mis näitab mulle minu profiilikataloogi, kuid miski siin ei võimalda mul alla laadida faile, mida mulle näidatakse. Lähim, mida saan, on see, kui muudan ankurimärgendeid allalaadimise atribuudi lisamiseks (nii et nad laadivad navigeerimise asemel alla), kuid siis ilmuvad kõik lingid jalusesse tõrketeate "Faili ei saa alla laadida" (versus " Allalaadimine algas ... "mida ma eeldaksin). Mul pole aimugi, mida see konkreetne veateade tähendab, ja guugeldamine ei aita.

  • Tehke ülaltoodut, kuid hoidke all iga linki ja valige Ava rakendusega (vs Ava uuel vahelehel link jne). Kui ma saan failiuurija rakenduse tulla, annab see mulle alati sarnase veateate "Seda üksust ei saa salvestada."

  • Püütakse Firefoxile öelda (umbes umbes: konfigureerida võib-olla) minu profiili salvestamiseks või teisaldamiseks teise kohta, mille juurde pääsemiseks pole vaja juurkasti. Ilmselt Firefox sellist asja ei luba.

  • Püüate leida mõnda Firefoxi sünkroonimise funktsiooni, mis varundab mobiilis profiili. Tundub, et seda funktsiooni pole olemas.

  • Lisandmooduli leidmine kopeerib profiili teise kohta. Enne Firefox Quantumit oli üks lisa nimega Copy Profile, mis tegi täpselt seda asja. Lisandmoodul ei ühildu enam Firefox Quantumiga ja ma ei leia ühtegi asendajat.

  • ADB kasutamine Firefoxi käsitsi alandamiseks, nii et profiili kopeerimine töötab uuesti. Vähemalt üks kasutaja on juba midagi sarnast proovinud ja tulemuseks on see, et rakenduse andmed Firefox Quantumi ja Firefoxi mitte-Quantumi vahel on seadistatud piisavalt erinevalt, et värskelt alandatud versiooniga rakendus kohe laguneb. p>

Mul on raske uskuda, et juurimata Androidis on võimatu sama oluline ja arusaadav ülesanne nagu Firefoxi profiili varundamine. Kas keegi on veel selle või sarnase probleemiga kokku puutunud? Kas teil on lahendusi või ettepanekuid?

Täname!

üks vastus:
oct
2018-05-12 18:12:39 UTC
view on stackexchange narkive permalink

Mul oli sama probleem ja sain inspiratsiooni teie ideest kasutada WebIDE'i. Selgub, et vähemalt minu Firefoxi Androidi versioonis 59.0.2 on võimalik kogu JavaScripti profiilifailidele juurde pääseda, kuid see aitab ainult osaliselt varundada kõiki profiili andmeid.

Põhimõte

Faili sisule pääseb juurde Ajaxi abil ( vaata siit), ka siis, kui see on binaarne ( viide). Tundub siiski, et pääsete juurde ainult failidele, mis asuvad teie praeguses kataloogis või mis on alamkataloogis.

Näiteks saab browser.db sisule juurde pääseda navigeerimisega faili : ///data/data/org.mozilla.firefox/files/mozilla/XXXXXXXX.default/ ja seejärel käivitatakse konsoolis WebIDE kaudu:

  var xmlhttp = new XMLHttpRequest (); xmlhttp.open ("GET", "browser.db"); xmlhttp.responseType = "arraybuffer"; xmlhttp.send ();  

Tulemus siis salvestatakse massiivipuhvrina kausta xmlhttp.response . Kui andmed ei ole binaarsed, saab "arraybuffer".

asemel kasutada "text" piisab nende kopeerimisest lõikelauale koos koodiga copy (xmlhttp.responseText) , kuid suuremate failide puhul võib see mäluvea välja tõrjuda.

Sama tehnikat saab kasutada saada nimekiri failidest ja kataloogidest. Probleem on selles, et see (vähemalt minu jaoks) toimis ainult kataloogi jaoks, kuhu brauseriga navigeeriti, kuid mitte alamkataloogide jaoks. Tagastatud andmed on lihttekstina failide loend:

  300: file: ///data/data/org.mozilla.firefox/files/mozilla/XXXXXXXX.default/200: filename content-length viimane muudetud failitüüp201: AlternateServices.txt 0 N,% 2010% 20Mai% 202018% 2015: 33: 20% 20GMT-FILE 201: OfflineCache 0 N,% 2009% 20Nov% 202017% 2018: 28: 54% 20GMT DIRECTORY ...  

Varundamine

Täielikkuse huvides on siin kaks skripti, mida kasutasin failide varundamiseks. Mõlemad on ainult quick&dirty ja minimaalsed skriptid. Andmed kantakse arvutis töötavasse Pythoni serverisse, mis seejärel need salvestab.

Tähtis: nad varundavad ainult praeguses kataloogis olevaid faile , kuid mitte katalooge (vt ülaltoodud piirangut). Kuid kuna suurem osa profiilist asub juurkataloogis, võib see olla piisav. Kui soovite faile ka alamkataloogidesse salvestada, peate iga kataloogi jaoks uuesti JavaScripti kleepima ja käivitama. Vajalikud kataloogid loob server.

Pythoni server (salvestage see nimega server.py ja käivitage nt serveriga python3 .py 2222 olenevalt kasutatavast pordist)

  importige osfrom http.serveri import BaseHTTPRequestHandler, HTTPServerclass FileReceiveHandler (BaseHTTPRequestHandler): def _set_headers (self): self.send_response ( 200) self.send_header ('Content-Type', 'text / plain') self.end_headers () def do_POST (self): content_length = int (self.headers ['Content-Length']) # < --- saab andmete suurus post_data = self.rfile.read (content_length) # < --- saab andmed ise printida (self.path) # Salvesta fail suhteline_fail_path = os.path.join ('vastuvõetud_failid', self.path.lstrip ( '/')) kataloogid = os.path.dirname (suhteline_faili_tee) os.makedirs (kataloogid, exist_ok = True) avatud (suhteline_faili_tee, 'wb') kui f: f.write (post_data) self._set_headers () self.wfile.write (b'received ') if __name__ ==' __main__ ': from sys import argv port = int (argv [1]) kui len (argv) == 2 muud 80 server_address = ('', port) httpd = HTTPServer (server_address, FileReceiveHandler) print ('Starting server') httpd.serve_forever ()  

See on allikas, mida kasutasin serveri viitena.

JavaScripti allikas brauserile

Kohandage kaks esimest rida oma profiilitee ja kohaliku IP-aadressi ning pordiga. Seejärel kleepige see skript otse WebIDE'i konsooli, brauseriga navigeerides profiilikataloogi.

  var profile_basepath = "file: ///data/data/org.mozilla.firefox/files/ mozilla / XXXXXXXX.default "; var server =" http: // <your_local_ip>: 2222 "; funktsioon send () {var list_xmlhttp = new XMLHttpRequest (); // Failide hankimine list_xmlhttp.onreadystatechange = function () {if (list_xmlhttp.status == 200 && list_xmlhttp.readyState == 4) {itemslist = list_xmlhttp.response.split ('\ n'); for (var i = 0; i < itemlist.length; i ++) {if (itemslist [i] .startsWith ('201:')) {parts = itemslist [i] .split (''); if (osad [4] == 'FILE') {handleFile (osad); }}} console.log (üksuste loend); }}; list_xmlhttp.open ("GET", window.location.href, true); list_xmlhttp.responseType = "tekst"; list_xmlhttp.send ();} funktsiooni handleFile (osad) {var failinimi = JSON.parse (JSON.stringify (osad [1])); // faili sisu hankimine var file_xmlhttp = new XMLHttpRequest (); file_xmlhttp.onreadystatechange = function () {if (file_xmlhttp.status == 200 && file_xmlhttp.readyState == 4) {// Saada fail var filepath = window.location.href.substring (profile_basepath.length) + var send_xmlhttp = uus XMLHttpRequest (); send_xmlhttp.open ("POST", server + failitee, tõene); send_xmlhttp.send (fail_xmlhttp.response); console.log (failitee + "saadetud"); }} file_xmlhttp.open ("GET", window.location.href + osad [1], true); file_xmlhttp.responseType = "arraybuffer"; file_xmlhttp.send ();} send ();  

Skripti lõpuleviimiseks võib kuluda aega.

Olen OP-ga ühes paadis.Kahjuks ei tööta see skript enam, kuna päritolu ristitaotlused blokeeritakse tänapäevaste Firefoxi / Fenneci versioonidega: * Päritoluülene päring on blokeeritud: sama päritolupoliitika keelab faili kaugressursi lugemise: ///data/data/org.mozilla.fennec_fdroid/files/mozilla/w9ae812s.default/webappsstore.sqlite-wal.(Põhjus: CORS-i taotlus pole http). *


See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 3.0-litsentsi eest, mille all seda levitatakse.
Loading...