เมื่อเรียกใช้ WebDriver ด้วยเบราว์เซอร์ Chrome ได้รับข้อความ“ อนุญาตเฉพาะการเชื่อมต่อภายในเท่านั้น” แม้ว่าเบราว์เซอร์จะเปิดอย่างถูกต้อง


88

เมื่อฉันเรียกใช้เบราว์เซอร์ Chrome โดยใช้ WebDriver ฉันได้รับข้อความต่อไปนี้บนคอนโซล โปรดแจ้งให้เราทราบวิธีแก้ไข

"การเริ่มต้น ChromeDriver (v2.10.267521) บนพอร์ต 22582" "อนุญาตเฉพาะการเชื่อมต่อภายในเท่านั้น"

นี่คือโค้ดตัวอย่างของฉัน:

public class Browserlaunch {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "C:\\chromedriver_win32   \\chromedriver.exe");
        WebDriver driver = new ChromeDriver() ;
        driver.get("http://webdunia.com");
        driver.close();
        driver.quit();
    }
}

คำตอบ:


97

นี่เป็นข้อความให้ข้อมูลเท่านั้น สิ่งที่ข้อความกำลังบอกคุณคือโปรแกรมปฏิบัติการ chromedriver จะยอมรับการเชื่อมต่อจากเครื่องภายในเท่านั้น

การติดตั้งไดรเวอร์ส่วนใหญ่ (ไดรเวอร์ Chrome และไดรเวอร์ IE) สร้างเซิร์ฟเวอร์ HTTP การเชื่อมโยงภาษา (Java, Python, Ruby, .NET ฯลฯ ) ทั้งหมดใช้โปรโตคอล JSON-over-HTTP เพื่อสื่อสารกับไดรเวอร์และทำให้เบราว์เซอร์ทำงานโดยอัตโนมัติ เนื่องจากเซิร์ฟเวอร์ HTTP กำลังรับฟังเพียงพอร์ตเปิดสำหรับคำขอ HTTP ที่สร้างโดยการผูกภาษาการเชื่อมต่อกับเซิร์ฟเวอร์ HTTP ที่เริ่มต้นโดยการผูกภาษาจึงได้รับอนุญาตให้มาจากกระบวนการอื่นบนโฮสต์เดียวกันเท่านั้น โปรดทราบว่าข้อ จำกัด นี้ใช้ไม่ได้กับการเชื่อมต่อที่ เบราว์เซอร์สามารถทำกับเว็บไซต์ภายนอกได้ แต่เป็นการป้องกันการเชื่อมต่อขาเข้าจากเว็บไซต์อื่น ๆ


ในกรณีของฉันการทดสอบหยุดลงหลังจากเปิดเบราว์เซอร์และหน้าว่างเปล่า ใน url Not secure data:, ดังนั้นในแง่นี้จึงเป็นปัญหา คุณมีความคิดว่าทำไม?
SMPH

ดังนั้นหากฉันเข้าถึงเว็บไซต์ที่ใช้การสื่อสาร https กับซีลีเนียมโดยใช้ driver.get ( ฯลฯ ... ) นั่นหมายความว่าข้อมูลที่ส่งไปยังไซต์นั้นจะถูกเข้ารหัสด้วย https หรือไม่
Mike Sandstrom

การสื่อสาร HTTP (ไม่ปลอดภัย) ที่อ้างถึงในคำตอบนี้อยู่ระหว่างการผูกภาษา (คุณรหัสซีลีเนียมใน Java, C #, Python ฯลฯ ) และไดรเวอร์ของเบราว์เซอร์ (chromedriver, geckodriver ฯลฯ ) การสื่อสารระหว่างเบราว์เซอร์และเว็บไซต์ไม่มีการเปลี่ยนแปลง หากคุณใช้ HTTPS ในเบราว์เซอร์การสื่อสารระหว่างเบราว์เซอร์และเว็บเซิร์ฟเวอร์ควรเข้ารหัส
JimEvans

ฉันมีปัญหาเดียวกัน: / ปัญหานี้ได้รับการแก้ไขแล้วหรือไม่?
user3430861

13

ฉันได้รับข้อผิดพลาดเดียวกันทุกประการ วันนี้ฉันต่อสู้กับปัญหานี้มาสองสามชั่วโมงแล้ว ดูเหมือนว่าจะเกิดจากความไม่ตรงกันระหว่างเวอร์ชันของ chromedriver และ selenium-server-standalone ไฟล์ config.js อ้างถึงไดเร็กทอรีที่มี chromedriver 2.9 และ selenium-server-standalone 2.35.0 เมื่อฉันแน่ใจว่าเราอ้างอิง 2.10 และ 2.42.2 ก็ใช้ได้


13

ไม่จำเป็นต้องเป็นแนวทางปฏิบัติที่ดีที่สุด แต่สภาพแวดล้อมของฉันคือเครือข่ายท้องถิ่นที่มีเครื่องจักรหลายเครื่องซึ่งจำเป็นต้องเข้าถึงซีลีเนียม

เมื่อเรียกใช้ chromedriver คุณสามารถผ่านพารามิเตอร์ดังนี้:

chromedriver --whitelisted-ips=""

โดยทั่วไปแล้วสิ่งนี้จะเป็นรายการที่อนุญาตพิเศษของ IP ทั้งหมดไม่ใช่ทางออกที่ดีเสมอไปและควรระมัดระวังสำหรับสภาพแวดล้อมการผลิต แต่คุณควรได้รับคำเตือนแบบละเอียด:

การเริ่มต้น ChromeDriver 2.16.333244 (15fb740a49ab3660b8f8d496cfab2e4d37c7e6ca) บนพอร์ต 9515 อนุญาตการเชื่อมต่อระยะไกลทั้งหมด ใช้รายการที่อนุญาตแทน!

วิธีแก้ปัญหาที่ดีที่สุด แต่ได้ผล

การเช็คอินญาติ


5

สิ่งนี้เกิดขึ้นกับฉันเมื่อฉันต้องแก้ไขโครงการเก่าที่ไม่ได้รับการตรวจสอบมาระยะหนึ่ง chromedriver ที่เชื่อมโยงกับโปรเจ็กต์เข้ากันไม่ได้กับ chrome เวอร์ชันของฉันดังนั้นเมื่อฉันอัปเดต chromedriver มันก็ทำงานได้ดี


3

นี่เป็นข้อความให้ข้อมูลเท่านั้น ไม่มีความหมายอะไรเลยหากสคริปต์ทดสอบและ chromedriver ของคุณอยู่ในเครื่องเดียวกันคุณสามารถเพิ่มตัวเลือก "whitelisted-ips" ได้การทดสอบของคุณจะทำงานได้ดีอย่างไรก็ตามหากคุณใช้ chromedriver ในการตั้งค่าตารางข้อความนี้จะไม่ปรากฏ


3
ฉันจะเพิ่ม bro - "whitelisted-ips" ได้อย่างไร ฉันมีปัญหาเดียวกัน
Tanvir

2
วิธีเพิ่มรายการที่อนุญาตพิเศษ ฉันใช้ windows ขอบคุณ
garlapak

1

ฉันต้องรันคำสั่งในเทอร์มินัลเดียวและเทอร์มินัลเดียวกันไม่ใช่แยกกัน

nohup sudo Xvfb :10 -ac
export DISPLAY=:10
java -jar vendor/se/selenium-server-standalone/bin/selenium-server-standalone.jar -Dwebdriver.chrome.bin="/usr/bin/google-chrome" -Dwebdriver.chrome.driver="vendor/bin/chromedriver"

1

บ่อยครั้งที่ข้อผิดพลาดนี้ปรากฏขึ้นหากคุณใช้ Selenium และ ChromeDriver เวอร์ชันที่เข้ากันไม่ได้

ซีลีเนียม 3.0.1 สำหรับโครงการ Maven:

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.0.1</version>
    </dependency>

ChromeDriver 2.27: https://sites.google.com/a/chromium.org/chromedriver/downloads


1
คุณควรอธิบายว่าเขาจะแก้ปัญหาของเขาได้อย่างไร คุณเพียงระบุปัญหา แต่จะแก้ปัญหานี้อย่างไร? มีเวอร์ชันใดบ้างที่ใช้ร่วมกันได้
Sebi

1
ฉันใช้ชุดค่าผสมนี้: selenium-java 3.0.1 + ChromeDriver 2.27 (รองรับ Chrome v54-56)
Vitali Nikolaenko

1

หลังจากการวิเคราะห์อ่านบันทึกและซอร์สโค้ดจำนวนมากในที่สุดก็พบปัญหา และมันค่อนข้างง่ายที่จะแก้ปัญหานี้

ในบรรทัด sinle: คุณต้องผ่าน --whitelisted-ips = into โปรแกรมควบคุม chrome (ไม่ใช่ chrome!)

คุณสามารถทำได้สองสามวิธี:

หากคุณใช้ ChromeDriver ในเครื่อง / โดยตรงจากโค้ดให้แทรกบรรทัดด้านล่างก่อน ChromeDriver init

    System.setProperty("webdriver.chrome.whitelistedIps", "");

หากคุณใช้งานจากระยะไกล (เช่นซีลีเนียมฮับ / กริด) คุณต้องตั้งค่าคุณสมบัติระบบเมื่อโหนดเริ่มทำงานเช่นในคำสั่ง:

java -Dwebdriver.chrome.whitelistedIps= testClass etc...

หรือนักเทียบท่าโดยผ่านJAVA_OPTSenv

  chrome:
    image: selenium/node-chrome:3.141.59
    container_name: chrome
    depends_on:
      - selenium-hub
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444
      - JAVA_OPTS=-Dwebdriver.chrome.whitelistedIps=

0

Chromedriver เป็น WebDriver WebDriver เป็นเครื่องมือโอเพ่นซอร์สสำหรับการทดสอบเว็บแอพอัตโนมัติในเบราว์เซอร์จำนวนมาก มีความสามารถในการนำทางไปยังหน้าเว็บการป้อนข้อมูลของผู้ใช้การเรียกใช้ JavaScript และอื่น ๆ เมื่อคุณเรียกใช้ไดรเวอร์นี้จะทำให้สคริปต์ของคุณเข้าถึงสิ่งนี้และเรียกใช้คำสั่งบน Google Chrome

ซึ่งสามารถทำได้ผ่านสคริปต์ที่ทำงานในเครือข่ายท้องถิ่น ( Only local connections are allowed.) หรือผ่านสคริปต์ที่ทำงานบนเครือข่ายภายนอก ( All remote connections are allowed.) การใช้ตัวเลือก Local Connection จะปลอดภัยกว่าเสมอ โดยค่าเริ่มต้น Chromedriver 9515ของคุณสามารถเข้าถึงผ่านทางพอร์ต

เพื่อตอบคำถามนี้เป็นเพียงข้อความให้ข้อมูล คุณไม่ต้องกังวลเกี่ยวกับมัน

ด้านล่างเป็นตัวเลือกทั้งสอง

$ chromedriver

Starting ChromeDriver 83.0.4103.39 (ccbf011cb2d2b19b506d844400483861342c20cd-refs/branch-heads/4103@{#416}) on port 9515
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.

นี่คือการอนุญาตพิเศษ IP ทั้งหมด

$ chromedriver --whitelisted-ips=""

Starting ChromeDriver 83.0.4103.39 (ccbf011cb2d2b19b506d844400483861342c20cd-refs/branch-heads/4103@{#416}) on port 9515
All remote connections are allowed. Use a whitelist instead!
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.

-4

ฉันแก้ไขข้อผิดพลาดนี้โดยการติดตั้งไดรเวอร์เบราว์เซอร์:

  1. ไปที่เบราว์เซอร์ของคุณไปที่เว็บไซต์ seleniumhq.org
  2. เลือกแท็บดาวน์โหลด
  3. เลื่อนหน้าลงไปที่ส่วนเบราว์เซอร์และดาวน์โหลดไดรเวอร์ที่คุณต้องการโดยคลิกที่ลิงค์ตัวอย่างเช่น Google Chrome Driver
  4. ดับเบิลคลิกไฟล์ที่ดาวน์โหลดตัวอย่างเช่น chromedriver_mac64 (1) .zip
  5. ดับเบิลคลิกไฟล์ที่แยกออกมาตัวอย่างเช่น chromedriver

ข้อมูลอ้างอิง: ค้นหาข้อผิดพลาดใน YouTube.com

แพลตฟอร์ม: macOS High Sierra 10.13.3

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.