Các chủ đề phổ biến: Multilogin X, Multilogin 6,
Chạy Multilogin trong vùng chứa Docker
Trong bài viết này, chúng tôi đã đề cập đến quá trình tạo và khởi chạy Multilogin X bên trong vùng chứa Docker. Docker cho phép bạn đóng gói và triển khai ứng dụng của mình một cách nhất quán và di động, giúp quản lý dễ dàng hơn trên các môi trường khác nhau.
Bằng cách làm theo các bước được nêu ở đây, bạn có thể sử dụng Docker để chạy Multilogin X trên máy cục bộ của mình, trong môi trường đám mây hoặc trên bất kỳ hệ thống nào hỗ trợ Docker, mang lại tính linh hoạt và khả năng mở rộng cho nhu cầu tự động hóa web của bạn.
Các hướng dẫn trong bài viết này chỉ áp dụng cho các phiên bản agent 1.15.0 trở về trước.
Hãy đảm bảo bạn đang khởi chạy hồ sơ Mimic bằng tài khoản người dùng standard, không phải với người dùng root. Các trình duyệt Chrome, bao gồm cả Mimic, không hoạt động bình thường khi được thực thi với quyền root.
Trước khi bạn bắt đầu
- Cài đặt Docker bằng cách làm theo hướng dẫn cài đặt chính thức cho hệ điều hành của bạn:
- Tải xuống, cài đặt và kết nối agent Multilogin X
- Cài đặt Python và thư viện để tự động hóa cơ bản
Chạy tập lệnh
Để chạy tập lệnh mẫu của chúng tôi, bạn sẽ cần Dockerfile, tệp điểm nhập và tập lệnh tự động hóa.
Dockerfile
Dockerfile là một bộ hướng dẫn để Docker xây dựng một image, giống như một công thức tạo môi trường sẵn sàng sử dụng cho một ứng dụng. Nó phác thảo những phần mềm nào sẽ bao gồm, cách định cấu hình phần mềm và những tệp nào cần thêm.
- Cài đặt các phụ thuộc cần thiết
Ví dụ về tập lệnh
FROM ubuntu:22.04 AS base
# Install basic dependencies
RUN apt-get update && \
apt-get install -y \
xvfb \
ca-certificates \
fonts-liberation \
libasound2 \
libatk-bridge2.0-0 \
libatk1.0-0 \
libatspi2.0-0 \
libc6 \
libcairo2 \
libcups2 \
libcurl4 \
libdbus-1-3 \
libdrm2 \
libexpat1 \
libgbm1 \
libglib2.0-0 \
libgtk-4-1 \
libnspr4 \
libnss3 \
libpango-1.0-0 \
libu2f-udev \
libvulkan1 \
libx11-6 \
libxcb1 \
libxcomposite1 \
libxdamage1 \
libxext6 \
libxfixes3 \
libxkbcommon0 \
libxrandr2 \
wget \
xdg-utils \
openjdk-18-jre-headless \
jq \
curl \
unzip \
openssh-client \
python3 \
python3-pip \
libayatana-appindicator3-dev && \
pip install requests selenium && \
curl --location --fail --output mlxdeb.deb "https://mlxdists.s3.eu-west-3.amazonaws.com/mlx/1.15.0/multiloginx-amd64.deb" && \
dpkg -i mlxdeb.deb && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
Đảm bảo rằng hình ảnh cơ sở tương thích và tất cả các phần phụ thuộc cần thiết đều được cài đặt đúng cách. Ví dụ: các bản phân phối Ubuntu 20.04 và Linux được xây dựng dựa trên nó có gói libc6 đã lỗi thời, điều đó có nghĩa là chúng sẽ không hoạt động bình thường với ứng dụng của chúng tôi.
- Thiết lập màn hình ảo
Nhiều ứng dụng cần giao diện đồ họa để tương tác. Điều này cũng áp dụng cho các trình duyệt và Multilogin . Theo mặc định, các vùng chứa không có GUI, vì vậy chúng ta cần đặt một GUI cho tự động hóa không đầu. Bạn không cần cài đặt môi trường máy tính để bàn thông thường như Gnome hoặc KDE – môi trường ảo sẽ thực hiện thủ thuật này.
Để làm điều này, bạn có thể sử dụng gói Xvfb (X Virtual Frame Buffer). Xvfb mô phỏng màn hình không dựa vào màn hình vật lý hoặc hệ thống cửa sổ, giúp màn hình nhẹ và lý tưởng cho các thiết lập headless.
Chạy các lệnh bên dưới để thiết lập màn hình ảo:
ENV DISPLAY=:99
RUN mkdir /tmp/.X11-unix
RUN chown root:root /tmp/.X11-unix && \
chmod 1777 /tmp/.X11-unix
- Tạo người dùng
RUN useradd -m mlx-user && \
chown -R mlx-user:mlx-user .
Trước khi chạy tệp entrypoint, hãy chuyển sang người dùng này bằng cách thêm dòng USER mlx-user
.
Việc tạo người dùng là cần thiết vì không thể thực hiện tự động hóa bằng quyền root.
- Sao chép các tệp bổ sung và thiết lập quyền cho chúng
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
COPY ./env.py /app/mlx-app/
COPY ./main.py /app/mlx-app/
COPY ./mlx_functions.py /app/mlx-app/
- Xác định tệp entrypoint.sh sẽ được chạy sau khi vùng chứa được khởi động
ENTRYPOINT ["/entrypoint.sh"]
Tệp Entrypoint
Tệp entrypoint là một tập lệnh hoặc tệp thực thi cho Docker biết cách khởi động ứng dụng bên trong vùng chứa. Chúng làm việc cùng nhau để đảm bảo ứng dụng chạy chính xác và nhất quán trong vùng chứa.
- Bắt đầu hiển thị ảo ở chế độ nền
- Khởi động trình khởi chạy Multilogin X ở chế độ nền bằng cách sử dụng phím tắt “mlx“
- Đợi vài giây để launcher cập nhật
- Thay đổi thư mục thành nơi đặt tập lệnh tự động hóa
- Bắt đầu tập lệnh tự động hóa
#!/bin/bash
# Start virtual display
Xvfb :99 -screen 0 1024x768x24 &
# Start Multilogin launcher
mlx &
# Wait for a while so the launcher is properly installed
sleep 20
# Run Python automation script
cd /app/mlx-app && python3 main.py
Tập lệnh tự động hóa
Tập lệnh tự động hóa thực hiện một số tác vụ quét cơ bản với hồ sơ trình duyệt headless Multilogin X Được viết bằng Python, nó sử dụng Selenium WebDriver để tự động hóa tác vụ.
Kịch bản thực hiện các hành động sau:
- Đi tới một trang web cụ thể
- In tiêu đề trang web
- In số lượng bài viết có trên trang
- In tên từng bài viết
- Kết thúc quá trình tự động hóa và chấm dứt phiên driver.
Ví dụ về tập lệnh
def automation(driver): # Automation function
try:
driver.get("https://www.scrapethissite.com/pages/") # Go to this website
print(f'The title of the webpage is: "{driver.title}"\n') # Print the title of the website
articles = driver.find_elements(By.CLASS_NAME, "page")
print(f'There are {len(articles)} different articles on this page:\n') # Print how many articles are there
for i, article in enumerate(articles): # For each article, show us what is the name of the article
article_text = article.find_element(By.TAG_NAME, "a").text
print(f"{i+1}. {article_text}")
print("\nBasic automation finished.\n") # Print that the automation is finished
except Exception as e: # Catch expection if any
print(f"Something happened: {e}") # If any exception, print its details
finally:
driver.quit() # Quit driver session
mlx.stop_profile(quick_profile_id) # Close browser profile
Chạy vùng chứa Docker
Để xây dựng bộ chứa Docker, hãy đảm bảo trình nền Docker của bạn đang chạy, sau đó thực hiện lệnh sau trong thư mục chứa Dockerfile của bạn:
docker build -t mlx-image .
Khởi động vùng chứa bằng lệnh sau:
docker run -it --name my_mlx_container mlx-image