Find Jobs
Hire Freelancers

Convert Chrome extension to Safari Extension

$500-650 USD

Cerrado
Publicado hace más de 12 años

$500-650 USD

Pagado a la entrega
Google Chrome converted to a Safari extension. We will provide the Chrome Extension. The safari Extension will send browser history to server. The goal is to provide a extension for Safari that does the same thing as our Chrome Extension. We want the user to download and install an extension that takes all the browser history and sends it to our server. Full project specification in Google Doc: [login to view URL] Apple about converting Chrome extensions: [login to view URL] ## Deliverables # This is a copy of the Google doc for documentation. The google doc is easier to read I believe: [login to view URL] Project specification Safari Extension to send browser history to server 1 Summary We want a Google Chrome converted to a Safari extension. We will provide the Chrome Extension. (We have a Firefox extension aswell which you can get on request). 2 Description This description is for the provided flowchart. Flowchart also has the urls you will need to post data to. [login to view URL] Chrome extension can be dowloaded as zip from the same directory. Chrome extensions are basically just zip files renamed to .crx. Either rename the file to install in Chrome or download the packaged extension from: [login to view URL] 2.1 CheckState() 2.1.1 Idle browser The extension needs to run in the background without affecting performance of the computer. Therefore it is important that the extension does most of the work when the user is inactive. 2.1.2 Username, password and browser id To identify every user we need username and password. To identify every browser the user uses, a browser id has to be generated. Browser id is simply a random hash that gets generated once when the extension is installed. The browser id remains for as long the extension is installed. You can get a random browser id from [login to view URL]:SALT/response_format:json 2.2 CheckForDataToSend() Do ajax post to our server to check if the user has data to send. Included in the post: var postData = { user: localStorage["misetoUsername"], password: localStorage["misetoPassword"], identification_code: localStorage["misetoHashId"], extension_version: extension_version, browser_name: "Chrome" // should ofc be changed to Safari }; 2.3 searchHistoryAndSend(json_response) Parse json response. Important is to save transmit_id and phrase provided in the json response. This is used to identify current transmit. Example: var resp = [login to view URL](json_response); var transmitObj = new TransmitObj(); transmitObj.transmit_id = resp.transmit_id; [login to view URL] = [login to view URL]; 2.3.1 What to send For every date do searches in the browser history. The goal is to provide all the pageviews for each of the dates that is requested. For every pageview this information is needed/desirable: url id for pageview. If the browser keeps an id for every url. referring visit id. The id of the url that the user came from. transition type (link, bookmark, refresh and so on) visit id. If the browser keeps an id for every visit (series of pageviews in the same session) time for pageview (Unix timestamp) 2.3.2 Possible limitations We have met some limitations during development of the Firefox extension to get referring visit id. This was solved by providing an unique session id. If it is impossible to get referring visit id in Safari, similar solutions can be used but it is not desirable and it is not easier to implement. We have to be able to see how the pageview was accessed and this includes transition type and referring page. It is important that this information is somehow provided to our servers. 2.3.3 How this is done in Firefox and Chrome (Probably useful for better understanding): Mozilla : [login to view URL] [login to view URL] [login to view URL] Google Chrome: [login to view URL] 2.4 [login to view URL]() When the search in the browser history is done the only thing left to do is to send the data to our server. The ajax post have to include the following fields: var transmit = { "transmit_id": this.transmit_id, "phrase": [login to view URL], "user": localStorage["misetoUsername"], "password": localStorage["misetoPassword"], "history": [login to view URL] } For you to get a better understanding below is some of the post data from the Google Chrome Extension. This is just for the purpose of demonstrating the structure of the data. (It is in php since that is how our servers store the json data provided by the browsers.) It does only include the history field ([login to view URL] See above) and is therefore not a whole ajax post. The whole post includes everything provided in var transmit (see above). The data is indexed according to the code in [login to view URL] (google chrome extension): visitItems[k].id, visitItems[k].referringVisitId, visitItems[k].transition, visitItems[k].visitId, [login to view URL](visitItems[k].visitTime/1000), // seconds is enough 2.5 Other requirements Always use https. Will run mostly on Mac. If you can get the Safari extension to work on windows as well this would be great but it is not necessary. Safari extensions must be digitally signed before they can be installed. This is probably not a big issue but help here is required. Well written code. Commented in english. 3 The goal To provide a extension for Safari that does the same thing as our Google Chrome Extension. We want the user to download and install an extension that takes all the browser history and sends it to our server. In the provided history we want to be able to follow how the pageviews were made. To do this we need some sort of session id or referring visit id to every pageview. 4 Interface The user has to be able to input username and password. The Chrome Extension has a options page. Convert this options page to the Safari Extension. See [login to view URL] Everything visible to the user should be in swedish. There are very few thing visible to the user since most is done in the background. Write in english and I will give you the swedish translation if it is necessary. Other than that the extension runs in background. 5 User login Example below shows how the Google Chrome Extension authenticates with the server. Username and password is checked with the server at url [login to view URL] $.ajax({ type: "POST", url: "[login to view URL]", data: { 'username': username, 'password': password }, dataType: 'text text', global: false, success: function(json_response) { var resp = [login to view URL](json_response); if ([login to view URL] == true) { // login was correct. save! [login to view URL]( { email: [login to view URL], password: [login to view URL] }, function(response) {}); } else { return false; } }, error: function(jqXHR, textStatus, errorThrown) { return false; } }); You can test the remote_login on [login to view URL] It is the first test.
ID del proyecto: 3593489

Información sobre el proyecto

Proyecto remoto
Activo hace 12 años

¿Buscas ganar dinero?

Beneficios de presentar ofertas en Freelancer

Fija tu plazo y presupuesto
Cobra por tu trabajo
Describe tu propuesta
Es gratis registrarse y presentar ofertas en los trabajos

Sobre este cliente

Bandera de SWEDEN
VÄSTERÅS, Sweden
5,0
104
Forma de pago verificada
Miembro desde mar 18, 2009

Verificación del cliente

¡Gracias! Te hemos enviado un enlace para reclamar tu crédito gratuito.
Algo salió mal al enviar tu correo electrónico. Por favor, intenta de nuevo.
Usuarios registrados Total de empleos publicados
Freelancer ® is a registered Trademark of Freelancer Technology Pty Limited (ACN 142 189 759)
Copyright © 2024 Freelancer Technology Pty Limited (ACN 142 189 759)
Cargando visualización previa
Permiso concedido para Geolocalización.
Tu sesión de acceso ha expirado y has sido desconectado. Por favor, inica sesión nuevamente.