PhantomJS Versi 1.9.1 - Masalah dengan Otentikasi Proxy

Bisakah seseorang membantu saya dalam hal ini? Saya telah menghabiskan banyak waktu menyiapkan PhantomJS untuk menyimpan JPG dari halaman web tertentu dan berfungsi dengan sangat baik sampai saya menerapkannya pada mesin yang mengakses internet melalui proxy. Sekarang, apa pun yang saya coba, saya tidak bisa mendapatkan otentikasi, bukan? Adakah yang PERNAH berhasil melakukan ini?

Saya menggunakan argumen baris perintah: --proxy=xx.xx.xx.xx:8080 --proxy-type=http --proxyAuth=myusername:mypassword

Saya telah memeriksa Proxy (TMG) yang masih menyatakan bahwa nama pengguna saya anonim dan bukan nama pengguna yang saya kirimkan menggunakan baris perintah.

Dari --debug, saya dapat melihat bahwa proxy, proxyType, dan proxyAuth semuanya telah diisi dengan benar sehingga PhantomJS memahami baris perintah, namun ketika dijalankan, ia masih mengembalikan 'Proxy memerlukan otentikasi'

Dimana kesalahanku?

Terima kasih telah membaca ini dan, semoga, membantu saya

BTW - Saya menggunakan Windows 7 - 64 bit


person MBP    schedule 12.09.2013    source sumber


Jawaban (1)


Oke, jadi saya sudah melakukan banyak penggalian tentang ini dan berhasil. Jadi saya pikir saya akan mempublikasikan apa yang saya temukan kalau-kalau itu bisa membantu orang lain.

Salah satu hal yang saya temukan ketika saya mencari-cari adalah ada sedikit diskusi tentang penyertaan berikut ini pada header yang dikirimkan oleh JS yang digunakan untuk menggerakkan PhantomJS:

page.customHeaders={'Authorization': 'Basic '+btoa('username:password')};

daripada menggunakan

page.settings.userName = 'username';
page.settings.password = 'password';

yang tidak akan berhasil. Silakan merujuk ke Diskusi Sebelumnya

Ini bagus jika Anda menggunakan otentikasi tingkat dasar pada proxy. Ini tidak akan berfungsi jika Anda menggunakan Otentikasi Terintegrasi karena ini masih memerlukan NTLM/Kerberos atau apa pun.

Cara mengatasinya adalah dengan mengubah pengaturan pada klien.

Anda harus mengizinkan klien mengakses dunia luar TANPA merutekannya melalui proxy. Tentu saja di TMG, hal ini dilakukan dengan mengubah pengaturan yang berlaku pada Perangkat Lunak Jaringan Klien yang diinstal pada perangkat keras klien.

Dengan mengizinkan PhantomJS Executable untuk melewati proxy, Anda akan mengatasi masalah yang saya dan banyak orang lain alami tetapi Anda masih akan mengalami sedikit masalah karena Anda baru saja merusak keamanan sistem Anda, jadi berhati-hatilah dan berharap ada a versi baru PhantomJS yang menangani NTLM/Kerberos.

Alternatifnya, ubah Proxy Anda untuk menggunakan Otentikasi Dasar yang akan memungkinkan penggunaan solusi customHeaders berfungsi seperti di atas tetapi ini berpotensi menimbulkan risiko yang lebih besar bagi keamanan Anda daripada membiarkan klien melewati proxy.

person MBP    schedule 16.09.2013
comment
Ohh, lupa bilang: Anda juga perlu menyatakan --proxy-type=none ke baris perintah hanya untuk memastikan melewati proxy - person MBP; 17.09.2013