PhantomJS เวอร์ชัน 1.9.1 - ปัญหาเกี่ยวกับการตรวจสอบสิทธิ์พร็อกซี

ใครสามารถช่วยฉันในเรื่องนี้ได้บ้าง? ฉันใช้เวลาเป็นจำนวนมากในการตั้งค่า PhantomJS เพื่อบันทึก JPG ของหน้าเว็บเฉพาะ และมันทำงานได้ดีจริงๆ จนกระทั่งฉันไปปรับใช้บนเครื่องที่เข้าถึงเน็ตผ่านพรอกซี ตอนนี้ไม่ว่าฉันจะลองอะไรก็ตาม ฉันไม่สามารถรับการรับรองความถูกต้องได้ใช่ไหม มีใครเคยทำเช่นนี้บ้างไหม?

ฉันใช้อาร์กิวเมนต์บรรทัดคำสั่ง: --proxy=xx.xx.xx.xx:8080 --proxy-type=http --proxyAuth=myusername:mypassword

ฉันได้ตรวจสอบ Proxy (TMG) แล้ว ซึ่งยังคงยืนยันว่าชื่อผู้ใช้ของฉันเป็นแบบนิรนาม ไม่ใช่ชื่อผู้ใช้ที่ฉันส่งผ่านโดยใช้บรรทัดคำสั่ง

จาก --debug ฉันสามารถเห็นว่าพร็อกซี, proxyType และ proxyAuth ได้รับการเติมอย่างถูกต้องดังนั้น PhantomJS จึงเข้าใจบรรทัดคำสั่ง แต่เมื่อมันทำงาน มันยังคงส่งคืน 'Proxy ต้องมีการรับรองความถูกต้อง'

ฉันจะผิดตรงไหน?

ขอบคุณสำหรับการอ่านสิ่งนี้และหวังว่าจะช่วยฉันได้

BTW - ฉันใช้ Windows 7 - 64 บิต


person MBP    schedule 12.09.2013    source แหล่งที่มา


คำตอบ (1)


ตกลง ฉันได้ขุดคุ้ยเรื่องนี้มาทั้งหมดแล้วและทำให้มันได้ผล ดังนั้นฉันจึงคิดว่าจะเผยแพร่สิ่งที่ฉันพบเผื่อว่าอาจช่วยคนอื่นได้

สิ่งหนึ่งที่ฉันพบเมื่อค้นหาคือ มีการพูดคุยกันเล็กน้อยเกี่ยวกับการรวมสิ่งต่อไปนี้ไว้ในส่วนหัวที่ JS ส่งมาซึ่งใช้ในการขับเคลื่อน PhantomJS:

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

แทนที่จะใช้

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

ซึ่งจะไม่ทำงาน โปรดดูที่การสนทนาก่อนหน้า

ซึ่งเป็นเรื่องปกติหากคุณใช้การรับรองความถูกต้องระดับพื้นฐานบนพร็อกซี มันจะไม่ทำงานหากคุณใช้ Integrated Authetication เนื่องจากยังต้องใช้ NTLM/Kerberos หรืออะไรก็ตาม

วิธีแก้ปัญหานี้คือการเปลี่ยนการตั้งค่าบนไคลเอนต์

คุณต้องอนุญาตให้ไคลเอนต์เข้าถึงโลกภายนอกโดยไม่ต้องกำหนดเส้นทางผ่านพรอกซี แน่นอนใน TMG ทำได้โดยการเปลี่ยนการตั้งค่าที่ใช้กับซอฟต์แวร์เครือข่ายไคลเอนต์ซึ่งติดตั้งบนฮาร์ดแวร์ไคลเอนต์

ด้วยการอนุญาตให้ PhantomJS Executable ข้ามพร็อกซี คุณจะเอาชนะปัญหาที่ฉันและคนอื่นๆ เคยประสบมา แต่คุณยังคงประสบปัญหาอยู่เล็กน้อยเนื่องจากคุณจะทำลายความปลอดภัยของระบบ ดังนั้นโปรดตระหนักและหวังว่าจะมี PhantomJS เวอร์ชันใหม่ซึ่งรองรับ NTLM/Kerberos

หรือเปลี่ยนพร็อกซีของคุณให้ใช้การตรวจสอบสิทธิ์ขั้นพื้นฐานซึ่งจะทำให้การใช้โซลูชัน customHeaders ทำงานตามที่กล่าวมาข้างต้น แต่นี่อาจเป็นความเสี่ยงต่อความปลอดภัยของคุณมากกว่าการอนุญาตให้ไคลเอ็นต์ข้ามพร็อกซี

person MBP    schedule 16.09.2013
comment
โอ้ ลืมบอกไปว่า: คุณต้องระบุ --proxy-type=none ในบรรทัดคำสั่งด้วยเพื่อให้แน่ใจว่าจะข้ามพร็อกซีได้ - person MBP; 17.09.2013