Heritrix crawler với scope politeness và WARC
Heritrix crawler phù hợp tác vụ lưu trữ khi cần quản lý phạm vi, nhịp thu và record nguồn. Proxy chỉ là một phần của fetcher, không thay cho thiết kế job. Bản này đưa quy trình lab cùng ma trận nghiệm thu; phần chạy Heritrix còn chờ môi trường Java phù hợp và chưa được xác nhận runtime. ProxyVN hướng dẫn cách kiểm trên dữ liệu mẫu.
Heritrix crawler trong một job lưu trữ có giới hạn
Bản hướng dẫn này là thiết kế chờ kiểm runtime, không phải báo cáo một crawl đã chạy. Máy soạn đang có Java 8 trên Windows. Tài liệu hiện hành của Heritrix yêu cầu Java 17 và tập trung môi trường Linux, nên chưa có job Heritrix hoặc WARC do job thật tạo trong bộ kiểm này.
Getting Started chính thức là nguồn đối chiếu môi trường. Người triển khai cần khóa gói phát hành cùng tài liệu tương ứng trước khi thử. Đừng dùng một nhánh tài liệu snapshot để khẳng định mọi thuộc tính đã có trong một release ổn định khác.
Đầu ra riêng của bài là job lab giới hạn site, bảng URL được và không được thu, cùng bước đọc lại WARC. Mục tiêu khác với hướng dẫn parser HTML hoặc gọi một request qua proxy. Cần kiểm crawler, scope và archive như những phần liên quan nhưng có bằng chứng riêng.
Xác định loại lưu trữ cần đạt
Lưu response để phân tích text khác với lưu đầy đủ để xem lại giao diện. Một site động có thể cần công cụ capture hoặc quy trình bổ sung ngoài fetch HTTP truyền thống. Nêu mục tiêu trước giúp chọn expected output đúng, thay vì sau crawl mới quyết định cái gì được gọi là đủ.
Với lab đầu, chọn site tĩnh tự tạo có ít đường dẫn và marker rõ. Giữ HTML, CSS hoặc ảnh mẫu theo phạm vi đã định nếu mục tiêu cần chúng. Không bắt đầu bằng website ngoài Internet nhiều liên kết khi cấu hình scope chưa được nghiệm thu.
Một archive hợp lệ vẫn có thể chứa toàn trang lỗi. Vì vậy ngoài kiểm định dạng WARC, cần status và nội dung mục tiêu. Chất lượng lưu trữ gồm dữ liệu đúng nguồn và đúng phạm vi, không chỉ tệp có phần mở rộng warc.gz.
Heritrix crawler với release và cấu hình job
Tại thời điểm nghiên cứu, trang release ổn định và tài liệu latest không mang cùng nhãn phiên bản. Điều này cần được ghi trước khi sao chép cấu hình. Bản hướng dẫn không tuyên bố đã chạy một gói chỉ vì đã đọc trang tài liệu của nó.

Job release và scope riêng
Khóa gói trước khi tạo mẫu job
Trang release Heritrix giúp xác định gói phát hành để đánh giá. Khi tải, giữ version, checksum hoặc bằng chứng kiểm gói theo nguồn cung cấp. Nếu dùng snapshot, khóa revision rõ và nhận đó là môi trường thử riêng.
Sau khi chọn runtime, ghi Java version và hệ điều hành vào hồ sơ. Một job build được trên môi trường này chưa chứng minh môi trường khác tương thích. Đặc biệt không dùng kết quả kiểm XML trên Windows làm bằng chứng job đã chạy trên Linux.
Mỗi job nên có thư mục riêng, mô tả, seed và output có thể nhận diện. Không sửa trực tiếp một job đang chạy để thử biến proxy. Tạo bản lab tách biệt giúp đối chiếu cấu hình trước và sau mà không ảnh hưởng dữ liệu có sẵn.
Chỉnh bean hiện hữu theo profile đã chọn
Job có thể dùng cấu hình XML hoặc cơ chế được release hỗ trợ. Khi tài liệu đưa một bean minh họa, kiểm bean tương ứng đã tồn tại trong profile chưa. Thêm một định nghĩa trùng ID có thể không phải cách override phù hợp và cần được build kiểm.
Giữ bản cấu hình trước chỉnh cùng diff sau chỉnh. Nếu job không build, kiểm lỗi cấu trúc hoặc tên thuộc tính trước khi điều tra mạng. Chưa có job được khởi tạo thành công thì chưa thể có bằng chứng fetch qua proxy.
Configuring Crawl Jobs mô tả các nhóm thiết lập. Bài dùng tài liệu để thiết kế bước kiểm, không đưa toàn bộ một profile mới chưa chạy rồi nhận nó là cấu hình production. Những lựa chọn còn thiếu phải được hoàn thiện trong môi trường lab.
Heritrix crawler với seed scope và luật từ chối
Seed là điểm bắt đầu, còn scope quyết định tập URL có thể được xử lý theo luật. Một seed duy nhất vẫn có thể dẫn tới nhiều host qua liên kết. Vì vậy kiểm scope phải có cả URL được phép và phản ví dụ ngoài phạm vi.
Site lab có danh sách mục tiêu hữu hạn
Thiết kế trang gốc liên kết đến a, b, một ảnh nội bộ và một URL ngoài host. Thêm đường private được robots lab loại theo chính sách đã chọn. Mỗi trang nội dung có marker riêng để đối chiếu với payload archive.
Danh sách expected ghi trước những tài nguyên cần giữ theo mục tiêu. Nếu cần CSS và ảnh để replay site tĩnh, chúng phải nằm trong tập mục tiêu. Nếu chỉ kiểm text, ghi rõ không nghiệm thu giao diện đầy đủ từ bộ đó.
Một redirect ra host ngoài scope là ca quan trọng. Cần biết job có dừng đúng ranh giới hay thu tiếp, theo thiết kế được phép. Không chỉ lọc seed rồi bỏ qua các URL được phát hiện sau redirect hoặc trong tài nguyên phụ.
Kiểm thứ tự và hiệu lực luật
Scope có thể là một chuỗi quyết định với thứ tự và điều kiện cụ thể. Đọc profile thực của release trước khi thêm một luật chấp nhận. Một luật rộng ở phía sau có thể làm kết quả khác cách người đọc hiểu khi nhìn một dòng regex riêng.
Tạo bảng URL thử gồm host đúng, host gần giống, port khác, query và đường dẫn ngoài mục tiêu. Chạy cơ chế kiểm scope của môi trường hoặc một job lab nhỏ để xác nhận. Regex match trong Python chỉ kiểm biểu thức, không chứng minh cả chuỗi DecideRule đang dùng nó.
Không dùng một phép contains domain để giới hạn host. Tên gần giống hoặc URL có domain trong query có thể bị nhận nhầm. Ranh giới host, scheme và port cần được xử lý theo quy tắc đã chọn và bộ test âm.
Heritrix crawler với politeness và giới hạn công việc
Nhịp thu cần phù hợp quyền truy cập và chính sách nguồn. Số worker, delay và giới hạn job có tác động khác nhau. Không tăng đồng thời mọi tham số để làm crawl xong nhanh trước khi tính đúng và scope được xác nhận.

Politeness và giới hạn có kiểm soát
Giữ nhịp nhỏ ở lượt nghiệm thu đầu
Site lab ít URL chỉ cần mức song song thấp để quan sát log. Chọn delay theo thiết kế thử và ghi là giá trị tự đặt. Không dùng ngưỡng của một fixture vài trang làm khuyến nghị cho mọi website hoặc mọi máy chủ.
Nếu robots hoặc phản hồi nguồn yêu cầu điều chỉnh hành vi, xử lý theo công cụ và phạm vi được cấp quyền. Proxy không thay đổi nghĩa của quyền truy cập. Không đổi tuyến để bỏ qua một giới hạn nguồn đã công bố.
Các giới hạn số tài liệu, byte và thời gian cần được hiểu theo cơ chế dừng của Heritrix. Tài liệu mô tả dừng có kiểm soát có thể hoàn tất các URI đang xử lý. Vì vậy không hứa một giới hạn mềm sẽ chặn đúng từng byte hoặc từng request tại một điểm cứng.
Theo dõi trạng thái thay vì chỉ chờ tệp xuất hiện
Job đang chạy, đang tạm dừng và đã kết thúc là các trạng thái khác nhau. Tệp WARC có thể xuất hiện khi vẫn đang được ghi. Đừng gửi tệp đó sang pipeline cuối như archive đã hoàn tất nếu writer chưa đóng theo quy trình.
Khi dừng lab, dùng thao tác công cụ để hoàn tất và thu hồi tài nguyên trước khi kiểm output. Nếu buộc dừng tiến trình, đánh dấu khả năng archive chưa đầy đủ và kiểm lại theo công cụ. Không gọi mọi tệp còn trên đĩa là kết quả thành công.
Lưu mốc bắt đầu, hoạt động cuối và kết thúc để giải thích thời gian job. Một job ít request có thể chờ politeness hoặc gặp lỗi môi trường, chưa đủ kết luận proxy chậm. Cần đọc đúng log của chặng đang điều tra.
Heritrix crawler và proxy ở fetcher thực dùng
Tùy fetcher và phiên bản, thuộc tính mạng có thể khác nhau. FetchHTTP và những triển khai khác không nên được coi là cùng một cấu hình. Xác định bean được job nạp rồi đối chiếu tài liệu của đúng nhánh trước khi thử.
Ví dụ override HTTP proxy cho FetchHTTP
Khối XML dưới là phần minh họa cần hợp nhất vào bean tương ứng của job đã chọn, không phải một file job hoàn chỉnh. Nó dùng proxy loopback không có xác thực. Build job là bước cần làm trước khi launch để phát hiện tên thuộc tính hoặc cấu trúc không phù hợp.
<bean id="fetchHttp" class="org.archive.modules.fetcher.FetchHTTP">
<property name="httpProxyHost" value="127.0.0.1" />
<property name="httpProxyPort" value="8895" />
</bean>
Bean Reference hỗ trợ đối chiếu thuộc tính fetcher. Nếu cần credentials, chọn cơ chế được release hỗ trợ và che trong bản bàn giao. Không nhận một proxy mở trong lab là bằng chứng xác thực thương mại đã chạy.
Global proxy và proxy theo job có thể có mức ưu tiên theo phiên bản. Chỉ đặt một nguồn cấu hình ở lượt đầu, rồi thêm ca ưu tiên nếu hệ thống cần. Không để nhiều nguồn cùng tồn tại mà chỉ nhìn một file rồi đoán tuyến.
Hai log cần nối với nhau
Log proxy phải có request target của site lab trong lượt qua relay. Log crawl phải có kết quả URL tương ứng. Nếu archive có payload mà relay không có request, kiểm bypass, fetcher và nguồn cấu hình trước khi nhận ca qua proxy thành công.
Đối chứng direct cần dùng cùng seed, scope và nội dung theo một trạng thái đầu vào tương đương. Nếu job thứ hai có lịch sử fetch khác, số request có thể đổi do trạng thái chứ không do proxy. Giữ hai workspace lab mới là một lựa chọn dễ kiểm cho ca đầu.
Khi mua proxy cho tác vụ lưu trữ, mô tả fetcher, HTTP hoặc HTTPS và thời gian giữ kết nối. Không khẳng định tương thích chỉ từ một property được tài liệu liệt kê. Bản này chưa chạy Heritrix hoặc gateway ProxyVN trong môi trường mục tiêu.
Heritrix crawler với WARC và đối soát payload
Job lưu trữ cần tạo output đọc lại được theo mục tiêu. Một WARC parser có thể giúp kiểm record, URL và body, nhưng không tự chứng nhận scope hoặc replay. Những lớp kiểm này phải nối với log job và danh sách expected.

Log fetch nối với WARC
Bằng chứng |
Câu hỏi nghiệm thu |
Trạng thái bản này |
|---|---|---|
Job build và log |
Cấu hình có được nạp |
Chờ runtime |
Crawl log |
URL nào được fetch hoặc loại |
Chờ runtime |
Proxy log |
Fetch đi qua relay nào |
Chờ runtime |
WARC từ job |
Payload và nguồn có đúng |
Chờ output job |
Đọc archive sau khi writer hoàn tất
Dùng công cụ đọc WARC theo version được tạo và xử lý payload đúng cách với stream. Đối chiếu target URI, status HTTP và marker nội dung của a, b. Không chỉ đếm record vì request, response và loại record khác có đơn vị khác nhau.
Nếu job tạo record tham chiếu hoặc chống trùng, phải kiểm cách đọc lại payload theo profile tương ứng. Không mặc định mỗi URL luôn có một response chứa body đầy đủ. Tài liệu writer và replay của môi trường cần được đọc trước khi đánh giá dung lượng giảm.
Bộ WARC tự tạo ở bài khác trong đợt không thay thế WARC do Heritrix tạo. Nó chỉ giúp chuẩn bị công cụ đọc và cách so byte. Trạng thái nghiệm thu job vẫn pending cho đến khi có output thật từ runtime đã khóa.
Giữ provenance của một lần thu
Manifest nên nối job ID, cấu hình, release, thời điểm và danh sách archive. Hash tệp giúp kiểm sao chép đúng bản, còn payload digest phục vụ phép so theo phạm vi record. Không gộp chúng thành một nhãn checksum chung không có thuật toán hoặc lớp dữ liệu.
Ngày capture không tự là ngày xuất bản trang. Một trang cũ được thu hôm nay cần hai mốc nếu nhiệm vụ cần lịch sử. Đừng lấy timestamp tệp trên hệ điều hành làm ngày nguồn đã thay đổi.
Nếu cần replay, chạy một ca xem lại site lab có tài nguyên phụ và kiểm tài nguyên ngoài scope không được thu. Việc trình duyệt mở được trang đầu chưa chứng minh mọi ảnh, CSS và request động được phát lại theo archive. Tiêu chí đầy đủ phải được định nghĩa trước.
Heritrix crawler với giao diện tạo và chạy job
Tài liệu WUI cung cấp vòng đời thao tác để xây job. Các nhãn có thể thay theo release hoặc profile, nên đối chiếu giao diện thật trong môi trường lab. Bản này giữ quy trình theo tài liệu, chưa xác nhận bằng thao tác UI trên một tiến trình Heritrix.
Thứ tự thao tác cần kiểm
- Tạo job mới từ profile phù hợp, đặt tên riêng cho lab và mở trang job.
- Mở Configuration, chỉnh thông tin liên hệ vận hành, seed và những bean cần thay theo profile.
- Lưu thay đổi, chọn build và đọc Job Log để xác nhận cấu hình được khởi tạo.
- Chọn launch, kiểm trạng thái tạm dừng ban đầu theo phiên bản rồi unpause để chạy trong scope đã định.
- Khi kết thúc thử, dùng terminate và teardown theo vòng đời công cụ để hoàn tất và giải phóng job.
Không dùng tài khoản mặc định trong một giao diện quản trị mở cho mạng rộng chỉ vì ví dụ tài liệu có chuỗi mẫu. Với lab, giữ WUI ở loopback và credentials riêng của công việc. Bài không cần mở cổng quản trị ra Internet để nghiệm thu fetch.
Kiểm trước khi unpause
Đọc lại seed và scope có hiệu lực trước thao tác cho job thực gửi request. Build thành công chủ yếu xác nhận cấu hình có thể nạp theo công cụ, chưa chứng minh scope phù hợp mục tiêu. Một regex đúng cú pháp vẫn có thể quá rộng.
Xác nhận thư mục output là nơi dành riêng cho lab và còn đủ dung lượng theo kế hoạch. Đừng ghi archive thử vào kho đang được pipeline khác đọc. Tên job và đường dẫn rõ giúp tránh lấy nhầm một archive cũ làm kết quả mới.
Nếu có thay đổi cấu hình sau build, kiểm quy trình áp dụng của release trước khi cho rằng bộ đang chạy đã dùng bản mới. Giữ version cấu hình cạnh log. Một tệp đã lưu trên đĩa không tự chứng minh các bean trong bộ nhớ đã được tạo lại theo nó.
Heritrix crawler và các ca âm cần nghiệm thu
Ca âm cho thấy thiết kế từ chối đúng phần không được thu và ghi lỗi có thể giải thích. Nếu bộ thử chỉ có trang tốt, scope hoặc proxy sai vẫn có thể không bị phát hiện. Các ca sau là yêu cầu cần chạy, chưa có kết quả runtime trong bản nháp.

Các ca âm chờ runtime
URL ngoài phạm vi và đường bị loại
Host ngoài allowlist cần không có fetch theo scope, trong khi trang a và b được xử lý đúng. Đường private cần được đánh giá theo robots và chính sách đã chọn. Nếu URL không xuất hiện chỉ vì chưa được khám phá, chưa đủ bằng chứng luật từ chối đã làm việc.
Redirect ra ngoài scope cần log quyết định ở đích. Một liên kết có host gần giống cần bị phân biệt với host lab thật. Query chứa tên host không được biến thành căn cứ chấp nhận URL ngoài phạm vi.
Proxy sai và response lỗi
Ca relay không nghe cổng cần cho thấy lỗi kết nối tương ứng thay vì âm thầm direct nếu hợp đồng không cho fallback. Chỉ dừng relay do lab tạo. Nếu cần xác thực, thêm ca credentials đúng và sai theo fetcher thực dùng, giữ bí mật khỏi báo cáo.
Ca origin trả lỗi HTTP phải được giữ đúng trạng thái và không tính thành nội dung thành công. Ca body thiếu hoặc bị giới hạn cần có trạng thái phù hợp với cấu hình. Đừng tăng mọi giới hạn để xóa dấu hiệu lỗi trước khi hiểu vì sao tài liệu bị cắt.
Archive đọc lỗi và thiếu tài nguyên
Ca WARC bị cắt cần được tạo trên bản thử riêng, không sửa archive đã lưu của người dùng. Công cụ đọc phải thể hiện không đủ hoặc lỗi theo khả năng của nó. Không coi phần record đọc được trước lỗi là một capture đầy đủ.
Ca thiếu CSS hoặc ảnh cần được đánh giá theo mục tiêu replay, không theo số record chung. Nếu nhiệm vụ chỉ lưu text, ghi rõ phạm vi đó để người nhận không đòi bằng chứng giao diện mà bộ thu chưa được thiết kế cung cấp.
Heritrix crawler và điều kiện bàn giao
Bàn giao cần có runtime, job config, scope, log và archive cùng một lần chạy. Một sơ đồ cấu hình không thay thế chúng. Trong bản hiện tại, tài liệu và ma trận đã chuẩn bị nhưng các bằng chứng runtime đó chưa có.
Hồ sơ cần bổ sung trước xuất bản
Chạy trên môi trường phù hợp, khóa release và kiểm mỗi ca trong ma trận. Giữ ảnh hoặc output WUI khi cần xác nhận thao tác, nhưng ưu tiên log có thể đọc và đối soát. Không đặt nhãn đã kiểm chỉ vì các thuộc tính XML được parser nhận.
Nếu chỉ có quyền quan sát client hoặc một phần hệ thống, ghi ranh giới kết luận. Có thể xác nhận output cuối theo bộ mẫu nhưng chưa xác định từng chặng nội bộ. Một báo cáo có giới hạn rõ giúp nhóm triển khai biết phần nào cần đo thêm.
Trước mỗi nâng cấp, chạy lại site lab và đọc WARC theo cùng expected set. So số URL, status, marker và tài nguyên cần replay. Giữ mốc cũ để phát hiện thay đổi ở fetcher hoặc writer thay vì chỉ xem job mới có kết thúc hay không.
Đọc báo cáo theo câu hỏi cần trả lời
Báo cáo seed giúp kiểm điểm bắt đầu, báo cáo host giúp nhìn phạm vi máy chủ đã được xử lý và báo cáo MIME type giúp đánh giá loại tài nguyên. Chúng không có cùng đơn vị đếm. Một trang HTML có nhiều ảnh có thể tạo nhiều tài nguyên nhưng vẫn là một trang giao diện theo cách người dùng gọi.
Crawl log cần được đọc cùng tài liệu mã trạng thái của release. Không đổi mọi giá trị âm thành HTTP status hoặc tự gán ý nghĩa theo một phần mềm crawler khác. Mã lỗi nội bộ và response HTTP là hai lớp thông tin cần phân biệt trong schema báo cáo.
Khi số URL ngoài dự kiến tăng, lấy mẫu log có quyền đọc và xem đường khám phá. Có thể đó là chuyển hướng, tài nguyên phụ hoặc query sinh thêm URL. Không chỉ hạ giới hạn rồi báo scope đã đúng vì job dừng sớm có thể che luật đang quá rộng.
Một tổng cuối có thể hữu ích để đối soát dung lượng, nhưng bảng URL mẫu vẫn cần để kiểm mapping. Với site a và b, marker phải gắn đúng target URI. Số tài nguyên đủ nhưng hai payload bị gán chéo vẫn là ca không đạt.
Checkpoint cần tương thích với job được phục hồi
Checkpoint giữ trạng thái công việc theo cơ chế crawler, khác với một tệp WARC đã ghi. Có archive không tự cho biết frontier còn những URL nào hoặc job nên tiếp tục từ đâu. Nếu dự án cần resume, phải kiểm chức năng checkpoint riêng trên site lab.
Giữ checkpoint cùng release, cấu hình và mã job theo yêu cầu công cụ. Không lấy checkpoint từ một version khác hoặc một scope khác rồi coi đó là input tương đương. Một thay đổi luật có thể làm ý nghĩa các URL đang chờ khác đi.
Ca resume nên dừng có chủ đích sau một trạng thái đã biết, phục hồi rồi đối chiếu tập cuối với expected. Kiểm không mất URL cần thu và không tạo dữ liệu ngoài scope. Bản này chưa chạy ca đó nên không tuyên bố khả năng khôi phục đã được nghiệm thu.
Quản trị WUI và đường fetch là hai tuyến
Giao diện quản trị HTTPS phục vụ người vận hành; fetcher đi tới nguồn thu dữ liệu. Truy cập WUI thành công không chứng minh fetcher sử dụng proxy. Ngược lại, một lỗi chứng chỉ giao diện không tự là lỗi TLS khi crawler truy cập site đích.
Giữ credentials quản trị tách với credentials proxy và quyền truy cập nguồn. Không đặt chúng trong cùng một chuỗi cấu hình để tiện thử. Khi chia sẻ log, chỉ giữ thông tin cần nhận diện lớp lỗi và che bí mật theo phạm vi công việc.
Nếu WUI cần truy cập từ một máy khác trong môi trường lab, đó là quyết định triển khai riêng cần chính sách mạng phù hợp. Bộ nghiệm thu cơ bản không yêu cầu mở giao diện ra mọi địa chỉ. Mục tiêu là chạy job có kiểm soát, không làm thay đổi bề mặt quản trị ngoài nhiệm vụ.
Giữ trạng thái chờ đúng đến lúc có bằng chứng
Sau khi môi trường Java phù hợp được chuẩn bị, chạy job không có proxy trước để xác nhận baseline. Sau đó thêm relay và các ca âm theo cùng expected set. Nếu baseline còn lỗi profile hoặc quyền ghi, đừng nhận lỗi đó là proxy không tương thích.
Khi đủ bằng chứng, cập nhật ghi chú bằng kết quả thực và giữ lịch sử phương pháp. Chỉ bỏ nhãn pending của những ca đã chạy đạt. Một lượt thành công không tự thay thế các nhánh HTTPS, xác thực hoặc replay mà nhóm triển khai chưa thử.
Một job lưu trữ cần đúng scope, đúng nhịp và archive đọc lại được; proxy chỉ là một chặng trong bộ nghiệm thu đó.
Anh em hãy lưu dữ liệu mẫu cùng cấu hình và kết quả đối chiếu để lần cập nhật sau có cơ sở kiểm lại. Tham khảo thêm tại Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam. Bắt đầu từ phạm vi nhỏ và tiêu chí rõ ràng khi triển khai Heritrix crawler.