Bagaimana saya bisa menjalankan SEMUA permintaan HTTP melalui Charles Web Debugging Proxy - termasuk yang baris perintah?

24

Saya menggunakan perangkat lunak Charles Web Debugging Proxy untuk men-debug permintaan HTTP. Ini berfungsi baik dengan browser desktop saya, Chrome dan Firefox, dan bahkan melihat permintaan HTTP yang dibuat oleh program lain.

Ketika saya menjalankan Charles dan memeriksa konfigurasi jaringan, saya pikir saya mengerti cara kerjanya - itu hanya mengatur proxy untuk semua permintaan HTTP dan HTTPS dan kemudian mendengarkannya di port 8888:

masukkan deskripsi gambar di sini

Namun item saya tidak tahu adalah bahwa saya tidak melihat permintaan yang saya memulai di Terminal, seperti wget, curl, atau elinksbrowser.

Saya tahu bahwa saya dapat menentukan proxy dengan curl dan wget dengan menggunakan 127.0.0.1:8888, tapi saya tidak mengerti jika antarmuka jaringan diatur dengan proxy dalam konfigurasi mengapa saya perlu menentukan proxy secara manual untuk mereka .

Saya juga sepertinya tidak bisa mendapatkan BlueCrab (mesin fotokopi situs web) untuk muncul di Charles juga - dan saya tidak melihat pengaturan proxy untuk itu - meskipun saya percaya itu menggunakan pembungkus XWindow atau sesuatu (jadi itu bukan benar-benar asli Aplikasi Kakao / Karbon):

masukkan deskripsi gambar di sini

Bagaimana saya bisa mendapatkan semua permintaan HTTP di sistem saya untuk dijalankan melalui Charles?

Klarifikasi

Pertanyaan saya adalah tentang dasar-dasar sistem mengapa keriting dan wget tidak akan menggunakan proxy ketika antarmuka jaringan didirikan untuk menggunakan satu lebih daripada bertanya tentang sintaks yang benar untuk curl, wget, dll

cwd
sumber

Jawaban:

4

VPN akan membuat perangkat jaringan baru, Anda bisa melihatnya dalam ifconfigperintah, dan kemudian merutekan semua jaringan sistem ke perangkat itu, Anda bisa melihat routeperintah penggunaan rute .

Tetapi HTTP Proxy (dalam hal ini, Charles) berbeda, hanya membuka port, untuk menggunakannya, Anda harus menentukan pengaturan aplikasi Anda untuk menggunakan port itu untuk barang HTTP. dan sebagai jawaban Kevin Reid curl,, wgetdll. tidak membaca pengaturan sistem OS X.


Jika proxy Anda adalah SOCKS (Charles mendukung HTTP dan SOCKS), Anda dapat menggunakan ProxyChains atau tsocks untuk aplikasi yang tidak mendukung pengaturan proxy.

misalnya:

$ proxychains git clone https://github.com/rofl0r/proxychains-ng
Mengdi Gao
sumber
Bagaimana cara melakukan debugging Web "seperti VPN"? Apakah ada aplikasi yang melakukan ini?
Pacerier
@Pacerier Coba Wireshark , ini alat pemantauan jaringan / internet, di mana Anda bisa melihat hampir semua lalu lintas jaringan sistem Anda, termasuk tetapi tidak terbatas pada UDP, TCP (termasuk HTTP). Namun, ini terlalu rumit untuk debugging web , tetapi masukkan perintah filter satu-liner sehingga hanya tampilan traffic HTTP yang dimungkinkan.
Mengdi Gao
@Pacerier juga mempertimbangkan mitmproxy , saat berjalan dalam mode Proxy Transparan , Anda mendapatkan debugging web seperti VPN. Sisi buruknya adalah itu adalah alat baris perintah dan konfigurasi agak rumit.
Mengdi Gao
18

wget di belakang proksi (Anda mungkin harus membuat file rc) sumber

`$ vim ~/.wgetrc`

Tambahkan baris berikut:

http_proxy=http://127.0.0.1:8888

meringkuk di belakang sumber proxy

$ vim ~/.curlrc

Tambahkan baris berikut:

proxy = 127.0.0.1:8888

elinks di belakang sumber proxy

Temukan elinks.conffile Anda dengan:

sudo find / -name elinks.conf

Tambahkan baris berikut:

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

Tidak yakin tentang BlueCrab

Rebecca Dessonville
sumber
1
> Saya tahu bahwa saya dapat menentukan proxy dengan curl dan wget dengan menggunakan 127.0.0.1:8888, tetapi saya tidak mengerti jika antarmuka jaringan diatur dengan proxy dalam konfigurasi mengapa saya perlu menentukan secara manual proxy untuk hal-hal ini.
cwd
Judul pertanyaan Anda dan apa yang Anda cari tidak cocok. Saya akan mencoba mencari info itu juga.
Rebecca Dessonville
1
Saya pikir itu cocok - Saya mencari cara untuk menjalankan SEMUA permintaan melalui Proxy Charles Debugging dan tidak harus menetapkan aturan pada program dengan basis program. Jangan khawatir jika pertanyaan ini basi dan tidak ada orang lain yang bisa menjawabnya, saya akan kembali dan menerima jawaban Anda. Dan terima kasih telah berbagi sintaks konfigurasi untuk utilitas tersebut.
cwd
Setelah membaca hasil edit Anda, saya sekarang melihat di mana saya salah memahami permintaan awal Anda.
Rebecca Dessonville
11

Alasan mengapa Anda tidak hanya mendapatkan proxy dari semua permintaan HTTP adalah karena pada tingkat sistem operasi , tidak ada yang namanya "permintaan HTTP"; hanya ada koneksi TCP. Menghubungi proxy HTTP berarti sedikit mengubah permintaan HTTP serta menghubungi server proxy alih-alih host yang disebutkan dalam URL, sehingga harus dilakukan dalam kode yang mengimplementasikan pengiriman permintaan HTTP.

curl dan wget memiliki kode HTTP sendiri, yang menggunakan file konfigurasi mereka sendiri - mereka belum diprogram untuk mencari pengaturan proxy di mana Mac OS X menyimpannya, juga tidak menggunakan perpustakaan HTTP yang disediakan dengan Mac OS X yang menggunakan proxy itu pengaturan.

Kevin Reid
sumber
6

Jika Anda tidak ingin menyentuh file konfigurasi Anda, menggunakan curl yang dapat Anda lakukan:

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

Olivier
sumber