Kan JavaScript de proxy van je browser wijzigen?
Onderscheid gewone webpagina-code van een geautoriseerde browserextensie die de proxy kan configureren.
Een script dat op een webpagina draait, heeft geen algemene instelling die de uitgaande proxy van de browser wijzigt. Een browserextensie kan extra machtigingen hebben, maar werkt volgens een ander beveiligings- en configuratiemodel.
Dit onderscheid gaat verloren in oude forumantwoorden. Code die bevoorrechte Firefox-internals, oude extensiemodules of verlaten add-on-SDK's gebruikt, was nooit een gewone webpagina-API. Zo'n fragment in een pagina plakken verleent die rechten niet.
Gebruik de extensie-API van de browser
Een Firefox-extensie kan de gedocumenteerde proxy.settings-API gebruiken met de vereiste machtigingen. Chrome biedt zijn eigen proxy-extensie-API. Hun configuratiemodellen verschillen; controleer de manifestvereisten en ondersteunde instellingen voor de browser die je target.
Een extensie moet ook rekening houden met beleid of andere extensies die dezelfde instelling beheren. Een geslaagde API-aanroep is geen reden om aan te nemen dat elke bestemming nu de beoogde route volgt. Inspecteer de resulterende configuratie en behoud de mogelijkheid van de gebruiker om die te herstellen.
Een andere fetch-URL wijzigt de bestemming
Een webpagina kan een applicatieserver aanroepen die een verzoek namens haar doorstuurt, binnen de webregels van de browser. In dat ontwerp verbindt de browser met die applicatieserver. Hij heeft geen algemene browserproxy geïnstalleerd of de route van niet-verwante tabbladen gewijzigd.
Evenzo verandert het verzenden van een header met een ander IP-adres niet het bronadres van de verbinding. Een bestemming kan vertrouwde doorgifte-metadata volgens zijn eigen beleid interpreteren, maar het netwerkpad is een apart feit.
Als je doel een IP-wijzigende proxy is om te browsen, kies dan een geschikte vermelding uit de lijst met gratis proxys en configureer een ondersteunde browserproxy of een geautoriseerde extensie. Is het doel de externe fetch van één webapplicatie, ontwerp die functie dan rond de werkelijke server- en browsergrenzen.