Come posso eseguire TUTTE le richieste HTTP tramite Charles Web Debugging Proxy, comprese quelle da riga di comando?


24

Sto usando il software Charles Web Debugging Proxy per eseguire il debug delle richieste HTTP. Funziona alla grande con i miei browser desktop, Chrome e Firefox, e vede anche richieste HTTP che altri programmi fanno.

Quando eseguo Charles e controllo la configurazione della rete, penso di aver capito come funziona: imposta un proxy per tutte le richieste HTTP e HTTPS e quindi le ascolta sulla porta 8888:

inserisci qui la descrizione dell'immagine

Tuttavia l'articolo che non riesco a capire è che non vedo alcuna richiesta che io avviare presso il Terminale, come ad esempio wget, curlo il elinksbrowser.

So che posso specificare il proxy con curl e wget usando 127.0.0.1:8888, ma non capisco se l'interfaccia di rete è impostata con un proxy nella configurazione perché dovrei specificare manualmente il proxy per loro .

Inoltre, non riesco nemmeno a far apparire BlueCrab (copiatrice del sito Web) in Charles - e non vedo un'impostazione proxy per esso - anche se credo che stia usando un wrapper XWindow o qualcosa del genere (quindi non è davvero un nativo App Cocoa / Carbon):

inserisci qui la descrizione dell'immagine

Come posso ottenere tutte le richieste HTTP sul mio sistema per eseguire Charles?

Una precisazione

La mia domanda è circa i fondamenti di sistema perché curl e wget non sarebbe utilizzare un proxy quando l'interfaccia di rete è stato configurato per utilizzare una più che chiedendo la sintassi corretta per curl, wgetecc

Risposte:


4

La VPN creerebbe un nuovo dispositivo di rete, puoi vederlo al ifconfigcomando e quindi instradare tutta la rete di sistema a quel dispositivo, potresti vedere il routecomando route use .

Ma il proxy HTTP (in questo caso, il Charles) è diverso, basta aprire una porta, per usarlo, è necessario specificare le impostazioni dell'applicazione per utilizzare quella porta per roba HTTP. e come risposta di Kevin Reid curl, wgetecc. non leggere le impostazioni di sistema di OS X.


Se il proxy è SOCKS (Charles supporta sia HTTP che SOCKS), è possibile utilizzare ProxyChains o tsocks per l'applicazione che non supporta le impostazioni proxy.

per esempio:

$ proxychains git clone https://github.com/rofl0r/proxychains-ng

Come avere un debug Web simile a una VPN allora? Ci sono app che lo fanno?
Pacerier,

@Pacerier Prova Wireshark , è uno strumento di monitoraggio e analisi della rete / Internet, in cui puoi visualizzare praticamente tutti i traffici di rete del tuo sistema, incluso ma non limitato a UDP, TCP (include HTTP). Tuttavia, è troppo complicato per il debug del web , ma inserisci un comando di filtro one-liner in modo che sia possibile solo la visualizzazione del traffico HTTP.
Mengdi Gao,

@Pacerier considera anche mitmproxy , quando si esegue in modalità proxy trasparente , si ottiene un debug Web simile a VPN. Il lato negativo è che è uno strumento da riga di comando e la configurazione è un po 'complicata.
Mengdi Gao,

18

wget dietro al proxy (potrebbe essere necessario creare il file rc) sorgente

`$ vim ~/.wgetrc`

Aggiungi la seguente riga:

http_proxy=http://127.0.0.1:8888

arricciare dietro la fonte proxy

$ vim ~/.curlrc

Aggiungi la seguente riga:

proxy = 127.0.0.1:8888

elinks dietro l' origine proxy

Trova il tuo elinks.conffile con:

sudo find / -name elinks.conf

Aggiungi la seguente riga:

protocol.http.proxy.host "127.0.0.1:8888"

Non sono sicuro di BlueCrab


1
> So che posso specificare il proxy con curl e wget utilizzando 127.0.0.1:8888, ma non capisco se l'interfaccia di rete è impostata con un proxy nella configurazione perché dovrei specificare manualmente il proxy per queste cose.
Cwd,

Il titolo della domanda e quello che stavi cercando non corrispondono. Cercherò di trovare anche queste informazioni.
Rebecca Dessonville,

1
Penso che corrisponda: sto cercando un modo per eseguire TUTTE le richieste tramite Charles Debugging Proxy e non devo impostare le regole su un programma in base al programma. Non preoccuparti se questa domanda diventa viziata e nessun altro può rispondere, tornerò e accetterò la tua risposta. E grazie per aver condiviso la sintassi di configurazione per quelle utility.
Cwd,

Dopo aver letto la tua modifica ora vedo dove ho frainteso la tua richiesta originale.
Rebecca Dessonville,

11

Il motivo per cui non si ottiene solo il proxy di tutte le richieste HTTP è perché a livello di sistema operativo non esiste una "richiesta HTTP"; ci sono solo connessioni TCP. Contattare un proxy HTTP significa modificare leggermente la richiesta HTTP e contattare il server proxy invece dell'host indicato nell'URL, quindi deve essere eseguito nel codice che implementa l'invio di richieste HTTP.

curl e wget hanno il proprio codice HTTP, che utilizza i propri file di configurazione - non sono stati programmati per cercare le impostazioni proxy dove Mac OS X li mantiene, né usano le librerie HTTP fornite con Mac OS X che usano quei proxy impostazioni.


6

Se non vuoi toccare i tuoi file di configurazione, usando curl puoi fare:

curl http://example.com --proxy 127.0.0.1:8888

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.