CodeGym /Các khóa học /Python SELF VI /Vượt qua hạn chế scraping: cấu hình user-agent, cookies v...

Vượt qua hạn chế scraping: cấu hình user-agent, cookies và cách tránh bị block

Python SELF VI
Mức độ , Bài học
Có sẵn

1. Giới thiệu về hạn chế scraping trên web

Hôm nay tụi mình sẽ bàn luận một chủ đề khá thú vị — làm sao để vượt qua các hạn chế scraping trên web. Mỗi lập trình viên quan tâm đến scraping sẽ sớm hay muộn đối mặt với những hạn chế và chặn từ các trang web. Đã đến lúc tìm hiểu cách làm sao để bọn mình không bị hệ thống bảo vệ của các trang web bắt lại và vẫn tiếp tục thu thập dữ liệu mà không làm máy chủ "nổi giận".

Khi bạn gửi request đến các trang web, thực chất là bạn đang "thâm nhập" không gian cá nhân của chúng để lấy dữ liệu mà chúng muốn bảo vệ. Nhưng tại sao trang web lại gây khó dễ? Có nhiều lý do: bảo vệ quyền sở hữu trí tuệ, đảm bảo độ tin cậy và hiệu năng của máy chủ, ngăn chặn sử dụng trái phép dữ liệu. Nếu bạn sử dụng quá nhiều tài nguyên của trang web hoặc vi phạm quy tắc, bạn có thể bị... banned. Và không ai thích bị ban cả, trừ quản trị viên server.

2. Cấu hình user-agent

user-agent là gì?

User-agent là một chuỗi nhận dạng mà trình duyệt của bạn gửi đi cùng với mỗi HTTP request. Nó cho máy chủ biết trình duyệt và hệ điều hành của bạn là gì. Và bạn biết không? Chuỗi user-agent này có thể dễ dàng giả mạo để máy chủ nghĩ rằng bạn đang truy cập từ một chiếc iPhone đời mới nhất thay vì từ một script Python bạn chạy trong lúc uống cafe.

Ví dụ thay đổi user-agent

Trong thư viện requests, việc thay đổi user-agent khá đơn giản. Dưới đây là một ví dụ nhỏ:

Python

import requests

url = "https://example.com"

# Cấu hình user-agent như trình duyệt Chrome
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
}

response = requests.get(url, headers=headers)
print(response.content)

Giả mạo user-agent giống như bạn đi dự tiệc công ty trong bộ đồ gấu trúc. Nhìn như bạn, nhưng lại khác. Máy chủ, khi thấy "trình duyệt" thay vì "script", có thể sẽ để bạn qua cửa.

3. Làm việc với cookies

Cookies là gì?

Cookies là những mẩu dữ liệu nhỏ mà trang web lưu lại trên trình duyệt của bạn. Chúng có thể chứa các loại dữ liệu khác nhau, từ cài đặt trang web đến ID phiên, cho phép bạn giữ đăng nhập sau khi login.

Sử dụng cookies trong request

Làm việc với cookies trong requests cũng không khó. Thường thì bạn sẽ nhận được cookies khi gửi request đầu tiên đến trang web, sau đó sử dụng chúng trong các request tiếp theo:

Python

# Tạo session để giữ cookies
session = requests.Session()

# Gửi request đầu tiên, thu thập cookies
session.get(url)

# Sử dụng cùng cookies trong các request tiếp theo
response = session.get(url)
print(response.content)

Session giống như phương tiện công cộng cho cookies. Chúng đi cùng bạn từ trang này sang trang khác, giữ lại các cài đặt của bạn.

4. Phương pháp tránh bị block

Mẹo thực tế để giảm nguy cơ bị block

Một vài mẹo nhỏ:

  • Thêm độ trễ giữa các request: thêm độ trễ ngẫu nhiên giữa các request để tránh bị nghi ngờ.
  • Thay đổi địa chỉ IP: sử dụng VPN hoặc proxy để thay đổi địa chỉ IP, tránh bị chặn theo IP.
  • Thay đổi user-agent: thay đổi user-agent cho mỗi request để trông như các trình duyệt khác nhau.

Ví dụ áp dụng delay và thay đổi IP

Sử dụng thư viện time để thêm độ trễ:

Python

import time
import random

for _ in range(10):
    response = session.get(url)
    # Độ trễ ngẫu nhiên
    time.sleep(random.uniform(1, 3))

Để thay đổi IP trong requests, bạn có thể sử dụng proxy:

Python

proxies = {
    "http": "http://10.10.10.10:8000",
    "https": "https://10.10.10.10:8000",
}

response = requests.get(url, proxies=proxies)

5. Các phương pháp lừa khác

Để script trông không đáng ngờ, hãy sử dụng headerscookies để giả lập người dùng thật. Nhớ: sự chân thật là "vũ khí bí mật" của bạn trong cuộc chiến với ban.

Vậy là bài học hôm nay đã kết thúc. Áp dụng những kỹ thuật này sẽ giúp bạn "ẩn mình" trong radar của các trang web và tiếp tục thu thập dữ liệu mà không bị block. Nhớ rằng, giống như bất kỳ siêu anh hùng nào, bạn cũng có trách nhiệm — hãy sử dụng những kỹ thuật này một cách có đạo đức và theo pháp luật. Hãy tin vào khả năng của mình, và code của bạn sẽ đẹp như bước nhảy của mèo trên bàn phím!

1
Nhiệm vụ
Python SELF VI, mức độ, bài học
Đã khóa
Thay đổi User-Agent
Thay đổi User-Agent
4
Nhiệm vụ
Python SELF VI, mức độ, bài học
Đã khóa
Sử dụng proxy để vượt qua chặn
Sử dụng proxy để vượt qua chặn
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION