linux selenium驱动程序,get()自动重定向到另一个页面

icnyk63a  于 2023-03-17  发布在  Linux
关注(0)|答案(1)|浏览(162)

我现在正在用Docker ubuntu container中的 selenium 做一个自动刮刀
当我做它的时候,我发现我不能访问在那网站的一个特定的网址,我尝试到driver.get()到那网址但是服务器自动地重定向另一个服务器.也许它是一个安全动作防止scrawling bot从做它
起初我猜是使用无头Chrome驱动程序的问题,但我尝试在Windows上运行代码,它工作。我该如何解决这个问题?
这是我在ubuntu docker contianer中的chromedirver选项(不工作版本)

options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--window-size=1920x1080')
options.add_argument("--user-agent=User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/111.0.5563.65 Safari/537.36")

这是ubuntu容器文件

FROM python:3
WORKDIR /usr/src
RUN apt-get -y update
RUN apt install wget
RUN apt install unzip
RUN apt-get install vim -y
RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
RUN apt -y install ./google-chrome-stable_current_amd64.deb
RUN wget -O /tmp/chromedriver.zip http://chromedriver.storage.googleapis.com/` curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`/chromedriver_linux64.zip
RUN mkdir chrome
RUN unzip /tmp/chromedriver.zip chromedriver -d /usr/src/chrome

COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt

CMD ["uvicorn","main:app","--reload","--host=0.0.0.0","--port=8000"]

这是Windows版本的chromedriver选项

options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')

就像我说的同样的代码在窗口上工作(除了chrome选项,略有不同,但几乎相同)我想知道如何修复这个问题

bq8i3lrv

bq8i3lrv1#

我不确定,但有可能是网站检测到你的Selenium驱动程序是僵尸程序,而不是重定向到另一个页面。你可以尝试通过改变ChromeDriver中的某些选项来模仿用户行为来修复这个问题。我会做的是:我会修改User-Agent Header(许多网站使用它来检测机器人)以模仿普通用户的浏览器,并在请求之间添加一些延迟。
下面是我所说的一个例子:

from selenium import webdriver
import time

options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')

# custom User-Agent header
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3")

# new ChromeDriver with modified options
driver = webdriver.Chrome(options=options)

# delays between requests
driver.get('https://example.com')
time.sleep(5)
driver.get('https://example.com/page1')
time.sleep(5)
driver.get('https://example.com/page2')
time.sleep(5)

希望您能将此应用到您的代码中,如果不能,我很抱歉。

相关问题