Tất cả bài viết

Cào Dữ Liệu Các Trang Tuyển Dụng Mà Không Bị Dừng Lại Ở Mức 50 Lần Lưu

Việc cào dữ liệu trang tuyển dụng đã trở thành một trong những công việc khó nhất trên web mở vào năm 2026. Đây là những gì đã thay đổi và cách các nhóm talent intelligence tiếp tục thu thập dữ liệu.

Thử Thách

Một điểm chuẩn vào tháng 6 năm 2026 từ ApplyArc đã thử nghiệm năm công cụ cào dữ liệu LinkedIn trên 200 lần kéo dữ liệu công việc thực tế. Ba trong số đó đã bị gắn cờ tài khoản hoặc âm thầm giảm tốc độ sau khoảng 50 lần lưu. Chỉ có hai công cụ sống sót an toàn.

Điểm chuẩn đó là toàn bộ câu chuyện. Các trang web việc làm từng là những mục tiêu dễ dàng. Bây giờ chúng là một số trong những mục tiêu khó khăn nhất trên web mở.

Nếu bạn đang xây dựng bất cứ thứ gì phụ thuộc vào dữ liệu danh sách công việc (lập kế hoạch lực lượng lao động, đánh giá chuẩn lương, lập bản đồ tài năng, tuyển dụng-như-một-tín-hiệu cho nghiên cứu công bằng), lớp thu thập của bạn đang chiến đấu với một loạt các hệ thống phòng thủ không tồn tại cách đây hai năm. Indeed ném CAPTCHA vào các phiên lạ. LinkedIn tương quan các tín hiệu phía trình duyệt trên các vòng xoay IP. Glassdoor rate-limits trên mỗi ASN, không phải trên mỗi IP. ZipRecruiter đẩy dải lương và ngày đăng bài vào JavaScript chỉ hiển thị nếu header của bạn trông giống một người, không phải một tập lệnh.

Vì vậy, bức tường 50 lần lưu không phải là vấn đề của LinkedIn. Đó là đặc tính của toàn bộ danh mục.

Tại Sao Các Trang Tuyển Dụng Ngày Càng Khó Hơn

Ba điều đã thay đổi vào năm 2026, và chúng xếp chồng lên nhau.

Điều đầu tiên là việc phát hiện bot đã đi theo hướng hành vi. Các kiểm tra tĩnh (User-Agent, danh tiếng IP, request mỗi giây) từng đủ để ngăn chặn các công cụ cào dữ liệu nghiệp dư. Không còn nữa. Các hệ thống phòng thủ ngày nay theo dõi cách bạn di chuyển qua trang web: bạn tải các trang nào theo thứ tự nào, bạn dành bao nhiêu thời gian, liệu bạn có fetch lại các bundle JS giống như một trình duyệt thực sự sẽ lưu vào bộ nhớ cache hay không. Chúng tôi đã viết về sự thay đổi đó trong Phát Hiện Bot Đi Theo Hướng Hành Vi. Các trang web việc làm đã áp dụng điều này từ sớm vì khách truy cập của họ thực hiện một số lượng nhỏ các hành động lặp lại (tìm kiếm, nhấp, đọc, lưu), và điều đó làm cho một tập lệnh dễ bị phát hiện khi nó bỏ qua một nửa chuỗi.

Thứ hai là quy mô của proxy pool không còn quan trọng. Một pool dân cư 50 triệu IP không giúp ích gì khi hệ thống phòng thủ là sự tương quan dấu vân tay ở lớp kết nối cộng với danh tiếng ASN. Chúng tôi đã đề cập đến vấn đề này trong Tại Sao Quy Mô Proxy Pool Không Còn Quan Trọng. Điều có tác dụng là chọn đúng exit cho trang web mục tiêu, không phải có nhiều exit hơn bất kỳ ai khác.

Thứ ba là hợp pháp. Indeed và LinkedIn đều có các nhóm pháp lý đệ trình. Kỷ nguyên của việc chạy một công cụ cào công cộng từ IP nhà của bạn đã kết thúc đối với bất kỳ ai có kế hoạch bán những gì họ thu thập được.

Việc Thu Thập Hiện Nay Trông Như Thế Nào

Đối với công việc talent-intelligence vào năm 2026, pattern tiếp tục hoạt động là một split stack: một fetch được kết xuất bởi trình duyệt thực sự cho các trang web được bảo vệ, cộng với lựa chọn exit cẩn thận để bạn không đến từ cùng một nhà cung cấp với mọi bot khác.

Với một nền tảng như FourA, đó là hai sản phẩm nói chuyện với nhau.

Trình duyệt xử lý phía kết xuất: gửi một URL với unblocker: true, nhận lại HTML đã kết xuất, cookie và ảnh chụp màn hình từ một phiên trình duyệt thực. JS được đánh giá, các trường tải chậm sẽ điền vào, và request vượt qua các kiểm tra ở lớp kết nối giúp bắt hầu hết các máy khách cơ bản. Lựa chọn proxy chạy ngầm: nền tảng chọn một exit cho mỗi request và trả về id base36 mờ đục của nó trong response (tại r.proxy ở cấp cao nhất trên Single/Browser, hoặc r.session.proxy trên Auto), vì vậy các lệnh gọi tiếp theo có thể sử dụng lại cùng một exit khi bạn cần tính liên tục của phiên. Đối với hầu hết các công việc trên trang web việc làm, Auto là điểm vào phù hợp, nó điều phối Single, Proxy và Browser dựa trên những gì mỗi mục tiêu cần, để code của bạn không phải làm vậy.

import requests

r = requests.post(
    "https://api.foura.ai/api/auto",
    headers={"Authorization": "Bearer pk_live_..."},
    json={
        "url": "https://www.example-jobs.com/search?q=data+engineer&l=Remote",
        "validate": {
            "status": {"accept": [200]},
            "data":   {"accept": ["data-testid=\"job-card\""],
                       "fail":   ["Just a moment", "captcha"]},
        },
    },
).json()

# r["data"] or r["body"]   — rendered content (Auto picks Single→"data" or Browser→"body" per host)
# r["session"]              — { "proxy": "<base36 id>", "cookies": [...], "userAgent": "..." }
# Reuse r["session"]["proxy"] on the next call to stick to the same exit, or pass it
# via `ignoreProxies: [<id>]` to force a different one.

Hai ghi chú về những gì điều này thực sự mua cho bạn.

Bức tường 50 lần lưu kiểu ApplyArc chủ yếu là vấn đề của phiên, không phải là vấn đề của pool. Một phiên trình duyệt thực, xoay vòng chu đáo, tồn tại lâu hơn rất nhiều trước khi vấp phải rate-limiter so với một máy khách HTTP thô. Và response mang một id proxy mờ đục thay vì một exit thô, để code của bạn luôn đơn giản và bạn không phải theo dõi exit nào đã xử lý request nào.

Ghi chú thứ hai là về những gì KHÔNG có trong snippet. Khử trùng lặp trên các trang web (cùng một vai trò kỹ sư dữ liệu trên LinkedIn, Indeed và trang web nghề nghiệp riêng của công ty, với ba chức danh hơi khác nhau) là vấn đề của bạn, không phải của lớp thu thập. Chúng tôi đã xem các nhóm đánh giá thấp điều này. Chuẩn hóa tiêu tốn nhiều thời gian kỹ thuật hơn là fetch và đó là nơi hầu hết các sản phẩm talent-intelligence kết thúc việc cạnh tranh.

Kết Quả

Một nhóm talent-intelligence theo dõi 200 công ty trên ba bảng cần khoảng 50.000 fetch trang mỗi tuần: kết quả tìm kiếm, trang chi tiết công việc và thỉnh thoảng làm mới trang công ty. Những con số bạn muốn đạt được trên workload đó:

  • Tỷ lệ thành công trên 95% đối với các mục tiêu cấp độ Indeed, trong đó thành công có nghĩa là HTML được kết xuất với dải lương và ngày đăng bài được điền.
  • Chi phí cho mỗi công việc dưới $0.004 từ đầu đến cuối, bao gồm kết xuất và lựa chọn exit.
  • Chu kỳ làm mới từ 6 đến 12 giờ đối với các vai trò hoạt động, để bảng điều khiển tín hiệu tuyển dụng của bạn không tụt hậu so với thị trường.

Những con số này mang tính minh họa, dựa trên báo cáo của các nhóm điều hành split-stack pattern này. Chi phí thực tế của bạn phụ thuộc vào các trang web bạn nhắm mục tiêu và mức độ quyết liệt bạn lọc các bài đăng mới.

Bài Học Quan Trọng

Các trang tuyển dụng hiện nay gần với độ khó của quảng cáo công nghệ và bán vé hơn là với thương mại điện tử nói chung. Đó là một sự thay đổi thực sự và nó giải thích tại sao các thư viện cào dữ liệu hoạt động vào năm 2024 lại liên tục vấp phải cùng một bức tường vào năm 2026.

Các nhóm đã mở rộng vượt qua nó ngừng suy nghĩ về "công cụ cào dữ liệu" như một đơn vị công việc. Họ suy nghĩ về các phiên, exit và khử trùng lặp như ba mối quan tâm riêng biệt và họ mua cơ sở hạ tầng cho hai thứ đầu tiên để các kỹ sư của họ có thể dành tuần của họ cho thứ ba. Dữ liệu danh sách công việc rẻ nhất là dữ liệu bạn không cần phải thu thập lại sau một cờ.