Clone website về máy cục bộ bằng TTrack

Đây là công cụ được đánh giá là tốt nhất hiện nay. Trước đây mình có sử dụng nhiều công cụ để rip giao diện web nhưng đều không ăn thua, các tài nguyên như ảnh, js,css không được tải về hay mã html còn thiếu.

Vấn đề đầu tiên mình gặp phải với HTTrack là phần mềm này có quá nhiều tính năng, thật choáng ngợp , những gì mình trình bày trong bài viết này là kỹ năng và công thức mình đã thực hành thành công.

Có 2 phiên bản sử dụng, phiên bản giao diện và sử dụng lệnh command line. Mình khuyến khích sử dụng lệnh vì nó chính xác hơn.

vào cmd trỏ vào thư mục cài đặt “c:\Program Files\WinHTTrack” gõ thử: httrack để test. Nếu sử dụng lâu dài thì có thể thêm vào “system environment variables windows, để sử dụng thư viện command line ở mọi folder không cần phải trỏ vào thư mục gốc của nó.

Nhập vào lệnh sau:

httrack "http://demo.hoangweb.com/thevistaanphu" -O "/tmp/thevistaanphu" "+*.hoangweb.com/*" -v 

Câu lệnh trên sẽ tải toàn bộ nội dung website có địa chỉ là “http://demo.hoangweb.com/thevistaanphu” và lưu vào thư mục c:/tmp/thevistaanphu. Giới hạn chỉ download page và tài nguyên đến từ domain hoangweb.com

Tham số -O nghĩa là “output to” (lưu vào đâu đó), -v: verbose (hiển thị toàn bộ tiến trình tải dữ liệu (gồm thành công và lỗi nếu gặp phải) ra cửa sổ lệnh).

Đây là lệnh phổ biến nhất mà tôi hay sử dụng. Chú ý: kiên trì đợi vài phút để quá trình tải dữ liệu của website hoàn tất.

Clone website về máy cục bộ bằng TTrack

 

Cấu trúc dữ liệu tải về

Các file tải về được lưu có cấu trúc theo địa URL. Ví dụ: ở ví dụ trên httrack tải địa chỉ http://demo.hoangweb.com/thevistaanphu, đây là website sử dụng mã nguồn wordpress, vào website này chúng ta thấy có ảnh logo, và các ảnh được lấy ra ở trong theme.

http://demo.hoangweb.com/thevistaanphu/wp-content/photography_uploads/1-logo1[1].jpg http://demo.hoangweb.com/thevistaanphu/wp-content/themes/elegant-photography/images/progress.gif ... 

Như vậy ảnh 1-logo1[1].jpg này sẽ được lưu tại folder:
c:/tmp/thevistaanphu/demo.hoangweb.com/thevistaanphu/wp-content/photography_uploads/
Ảnh progress.gif nằm ở folder:
c:/tmp/thevistaanphu/demo.hoangweb.com/thevistaanphu/wp-content/themes/elegant-photography/images/

.Nếu có external link ngoài domain hoangweb.com thì tài nguyên đến từ domain đó vẫn được lấy dữ liệu.

Sử dụng trợ giúp về lệnh, nếu bạn không chắc chắn về cách sử dụng lệnh đó, hãy gõ: httrack --help để tra.

Cú pháp

httrack www.all.net/bob/ 

lệnh này khá đơn giản , các options được sử dụng mặc định. Gõ: httrack --help bạn sẽ thấy giá trị mặc định của các tham số như sau:

w *mirror web sites %f *use proxy for ftp (f0 don't use) cN number of multiple connections (*c8) RN number of retries, in case of timeout or non-fatal errors (*R1) %P *extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0 don't use) NN name conversion type (0 *original structure, 1+: see below) LN long names (L1 *long names / L0 8-3 conversion) KN keep original links (e.g. http://www.adr/link) (K0 *relative link) o *generate output html file in case of error (404..) (o0 don't generate) X *purge old files after update (X0 keep delete) bN accept cookies in cookies.txt (0=do not accept,* 1=accept) u check document type if unknown (cgi,asp..) (u0 don't check, * u1 check but /, u2 check always) j *parse Java Classes (j0 don't parse) sN follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always) C create/use a cache for updates and retries (C0 no cache,C1 cache is prioritary,* C2 test update before) f *log file mode I *make an index (I0 don't make) pN priority mode: (* p3) *3 save all files D *can only go down into subdirs a *stay on the same address --mirror *make a mirror of site(s) (default) 

Giải thích:

Lọc các link tải về
Cho phép chỉ tải các link có chứa domain, subdomain hoặc URL chứa một chuỗi nào đó có hỗ trợ widcat.

httrack www.hoangweb.com/lien-he/ "+*.hoangweb.com/*" -v 

Print Debug
Để hiển thị thông tin tiến trình tải dữ liệu sử dụng thêm tham số -v (verbose).

httrack www.hoangweb.com/lien-he/ -v 

Tham số -B
Cho phép tải URL ở sub-level. Ví dụ:

httrack www.all.net/bob/ -B 

Trương trình không chỉ tải những URL con có chứa đường dẫn www.all.net/bob/ mà sẽ tải cả URL như: www.all.net/joe/, www.all.net/bob/deeper/

w *mirror web sites
tải dữ liệu của URL hiện tại và tự động quét các link có trong nội dung của URL đó và tiếp tục download dữ liệu của các link đó.

%f *use proxy for ftp (f0 don’t use)
nếu có link ftp (ie: ftp://) thì sử dụng ftp proxy server để tải về.

cN number of multiple connections (*c8)
cho phép 8 URL được download cùng một lúc. Ví dụ sau cho phép hoạt động 4 URLs cùng một lúc, thay vì mặc định là 8.

httrack www.all.net/bob/ -c4 -B 

RN number of retries, in case of timeout or non-fatal errors (*R1)
Cố gắng download URL một lần nữa nếu URL đó bị lỗi.

%P *extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0 don’t use)
quyét toàn bộ URLs thậm trí tìm thấy cả trong javascript,java và mọi nơi còn lại mà phần mềm có thể tìm thấy.

NN name conversion type (0 *original structure, 1+: see below)
Lưu lại đúng cấu trúc thư mục và tên file được sử dụng trong trang web. Như đã giải thích ở trên ví dụ ta có ảnh loading.gif sử dụng trên website có địa chỉ:

http://localhost/hoangweb/wp-content/themes/abc/images/loading.gif 

ảnh này sẽ được lưu về có cấu trúc folder theo cấu trúc URL đến ảnh đó là: hoangweb/wp-content/themes/abc/images/loading.gif
Tham số mặc định của httrack là N0, bạn có thể viết thêm tham số này tuy nhiên nếu sử dụng giá trị mặc định thì không cần chỉ định.

httrack http://localhost/hoangweb/wp-content/themes/abc/images/loading.gif -N0 -g -O /tmp/images 

Tuy nhiên, tất cả files tài nguyên bạn muốn tải về chung một thư mục thì chỉ số 0 bằng 1

httrack http://localhost/hoangweb/wp-content/themes/abc/images/loading.gif -N1 -g -O /tmp/proj1 

Lệnh trên sẽ tải file loading.gif vào thư mục “/tmp/proj1/web/images”. Nếu bạn cung cấp địa chỉ website hoặc URL tới một file mà nội dung có chứa các liên kết của những files tài nguyên khác. Tất cả những files tìm thấy sẽ đều lưu vào thư mục này. Bạn sẽ dễ quản lý hơn, trong những trường hợp rip giao diện của website. Đây cũng là cách để bạn lấy tất cả các file tài nguyên có trong file css.

LN long names (L1 *long names / L0 8-3 conversion)
mặc định lưu file với tên sử dụng trên website.

K keep original links (e.g. http://www.adr/link) (K0 *relative link)
ví dụ tải về nội dung web có địa chỉ: http://demo.hoangweb.com/thevistaanphu/gioi-thieu/ thì file html của nó nằm tại: /thevistaanphu/gioi-thieu/index.html

o *generate output html file in case of error (404..) (o0 don’t generate)
nếu có xẩy ra lỗi trong khi tải URL, trương trình sẽ tạo một file thay thế với nội dung thông báo URL đó đã bị lỗi (404 not found).

bN accept cookies in cookies.txt (0=do not accept,* 1=accept)
cho phép tất cả các cookies hoạt động nếu được yêu cầu, một số site cần duy trì cookie để sử dụng cho nhiều trang nó sẽ hoạt động như trên trình duyệt bình thường nên bạn không phải lo lắng.

u check document type if unknown (cgi,asp..) (u0 don’t check, * u1 check but /, u2 check always)
Phân tích những kiểu file không phải là html,image type như asp, php,…những file này có thể được tải về.

j *parse Java Classes (j0 don’t parse)
Cho phép phân tích và tìm URL ở java class file.

sN follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always)
có sử dụng robots.txt để chặn những URL không được phép truy cập.

C create/use a cache for updates and retries (C0 no cache,C1 cache is prioritary,* C2 test update before)
nếu bạn đang tải một website mà đã tải trước đó rồi, thì những URL cũ sẽ bị bỏ qua và chỉ tải những URL mới “If-Modified-Since“.

f *log file mode
lưu tại vào file log những hoạt động quan trọng diễn ra trong quá trình download.

I *make an index (I0 don’t make)
tạo file index.html là file chính của URL từ file này có liên kết tới các URL khác đã được download.

pN priority mode: (* p3) *3 save all files
lưu lại tất cả các file đã được tải về.

a *stay on the same address
Mỗi một domain được lưu vào một thư mục có cùng tầng, theo cấu trúc URL. Ví dụ trên: http://demo.hoangweb.com/thevistaanphu có liên kết tới domain www.pinterest.com như vậy chúng ta có 2 thư mục.
chứa tại c:\tmp\thevistaanphu\demo.hoangweb.com và c:\tmp\thevistaanphu\www.pinterest.com

–mirror *make a mirror of site(s) (default)
cố gắng download hết tài nguyên có thể theo như cấu hình đã lập.

Chi tiết câu lệnh

General Options

Chỉ định lưu dữ liệu tải về

Sử dụng tham số -O theo sau là đường dẫn thư mục bạn muốn lưu.

httrack http://www.shoesizes.com -O /tmp/shoesizes 

Action Options

Tham số:

  • -w *không đưa ra câu hỏi nhưng có xác nhận để cho phép trương trình tiến hành tải dữ liệu của website (mirror web sites).
  • -W trong quá trình tải dữ liệu có đưa ra lựa chọn để mirror web sites.
  • -g just get files (saved in the current directory)
  • -i tiếp tục chạy nếu gặp lỗi interrupted do lỗi không gian đĩa hoặc bị mất mạng (vì sử dụng cache)
  • -Y mirror ALL links located in the first level pages (mirror links)

Ví dụ Tham số -W

httrack http://www.shoesizes.com -O /tmp/shoesizes -W 

 

Clone website về máy cục bộ bằng TTrack

Ví dụ Tham số -w

httrack http://www.shoesizes.com -O /tmp/shoesizes -w 

 

Clone website về máy cục bộ bằng TTrack

Tham số -g

cho phép tải file một cách chính xác có trên địa chỉ URL. Ví dụ sau đây trương trình sẽ hiểu là tải file binary “windrv32.exe” không phải tải file windrv32.html.

httrack -g www.mydrivers.com/drivers/windrv32.exe 

Nếu URL không chỉ định kiểu tệp thì mặc định sử dụng định dạng .html
Do vấn đề bảo mật, web server không cho phép bất kỳ một trương trình nào có thể tải các file sử lý trên server như .asp, .php, .cgi một cách bất hợp pháp.

Tham số -i

tiếp tục thực hiện lại tiến trình tải URL nếu gặp lỗi như do ổ đĩa không còn dung lượng trống hay đột ngột bị mất mạng, bạn nên sử dụng tham số này sẽ rất có ích.

httrack http://www.shoesizes.com -O /tmp/shoesizes -i 

Tải tất cả các links chỉ ở level đầu tiên của page URL.

Chỉ tải tất cả các links ở level đầu tiên của URL. Nó rất hữu ích nếu page URL có nhiều external Link mà bạn muốn lấy dữ liệu của chúng.

httrack http://www.shoesizes.com/othersites.html -O /tmp/shoesizes -Y 

 

Clone website về máy cục bộ bằng TTrack

Proxy Options

Một số tính năng trên web sử dụng proxy, khi bạn vào website thấy xuất hiện hộp thoại đăng nhập đó là yêu cầu tài khoản proxy.

Clone website về máy cục bộ bằng TTrack

Tham số proxy có dạng:

-P proxy:port or -P user:[email protected]:port Clone website về máy cục bộ bằng TTrack 

 

Proxy anonymizing access

Sử dụng mặc định proxy không yêu cầu user ID và password, thực hiện câu lệnh như ví dụ dưới đây:

httrack http://www.shoesizes.com -O /tmp/shoesizes -P proxy.www.all.net:8080 

Trường hợp trên, mình giả sử có dịch vụ proxy proxy.www.all.net, sử dụng port 8080

authorized access proxy

Một số trường hợp proxy có yêu cầu user ID và password để hợp pháp truy cập vào tài nguyên web.

httrack http://www.shoesizes.com -O /tmp/shoesizes -P fc:[email protected]:8080 

Ở đây, userID=’fc’ và password=’password’

Ví dụ download tài nguyên từ FTP server
FTP là một ví dụ về proxy server, với ftp server thêm vào tham số -%f0. Ví dụ:

httrack ftp://ftp.shoesizes.com -O /tmp/shoesizes -%f0 

HTTrack không phải là công cụ chuyên dụng để tải ftp files. Tuy nhiên có thể sử dụng httrack có thể tải một file hoặc các tệp trong một folder trên FTP. Ví dụ:
ftp://ftp.somesite.com/pub/files/file010.zip hoặc ftp://ftp.somesite.com/pub/files/.

Limits Options

Giới hạn chiều sâu tìm kiếm URL

Để tránh tải toàn bộ các page của web một cách lãng phí và mất nhiều thời gian chờ đợi, đôi khi bạn đang chỉ cần copy giao diện của 1 page thôi. Điều này rất hữu ích bằng việc sử dụng tham số -r theo sau là mức độ level. Ví dụ sau, sẽ giới hạn độ sâu link tới 5 level.

#5 level httrack http://www.shoesizes.com -O /tmp/shoesizes -r5 ... 

Giới hạn số lượng mức

Trên thực tế một website không đến độ sâu 20 level tức link chứa trong link tới 20 lần, giả sử có website như vậy các bạn hãy thử nghĩ nếu có 2 subdirectory trong mỗi directory mà lệnh cho phép tìm tới 50 level như vậy sẽ là 10 tỷ directories ->con số này viễn tưởng gây ra lặp vô hạn (infinite loop) cho httrack. Cách tốt nhất là giới hạn số lượng directories sử dụng tham số -m. Ví dụ giới hạn tổng tối đa 50000000 directories được tải về.

httrack http://www.shoesizes.com -O /tmp/shoesizes -m50000000 

Giới hạn dung lượng file .html được tải về

httrack http://www.shoesizes.com -O /tmp/shoesizes -m50000000,100000 

Ví dụ trên thiết lập giới hạn kích thước cho .html file là 100,000 bytes. Thêm đối số thứ 2 vào tham số -m bởi dấu phẩy. Tuy nhiên HTML file hiếm khi có dung lượng lớn hơn thế, tuy nhiên trong một vài trường hợp chúng ta sẽ cần dùng.

Giới hạn tổng dung lượng tải về

Nếu ban quan tâm tới dung lượng tải về thì sử dụng tham số -M có thể giới hạn được dung lượng cần tải về tránh phung phí dung lượng ổ đĩa.

httrack http://www.shoesizes.com -O /tmp/shoesizes -M1000000000 

Ví dụ trên, giới hạn tới 1 gigabyte

Giới hạn độ sâu external link

Ví dụ sau đây sẽ chỉ tìm tới 5 level cho externel link.

httrack http://www.shoesizes.com -O /tmp/shoesizes %e5 

Các lệnh khác xem chi tiết tại: https://www.httrack.com/html/fcguide.html

Mình vừa liệt kê một số tính năng hay dùng, Ngoài ra còn rất nhiều tham số khác mình chưa có dịp nêu ra ở đây. Nhưng đối với những ai dùng vào việc sao chép giao diện web hay tải web về ổ đĩa để đọc offline thì những lệnh trên đủ để bạn xài rồi.

Lọc định dạng file muốn tải về

Bạn có thể chỉ định một số kiểu file cho phép tải về thay vì download rất nhiều file mà không sử dụng đến, bằng cách sử dụng ký tự wildcards.

Quét file trên URL

Ví dụ, tôi sẽ tải tất cả các file từ .zip hoặc .gif
bạn khai báo định dạng file với dấu + là cho phép và dấu – là bỏ qua: -*.gif hoặc cho phép file swf <code+*.swf.
Ví dụ đầy đủ:

$ httrack http://www.hillstate.com.vn/customer/vip.asp -O /tmp/save -B -N1 -r1 +*.gif 

Scan rule dựa vào kích thước

Cũng dựa vào kiểu lọc wildcard này mà có thể chỉ quét các file theo mẫu URL. Ví dụ bạn sẽ muốn tất cả các file trên đường link domain www.example.com, sử dụng pattern: ‘+www.example.com/*‘. Thêm vào đó lấy các file gif nhưng giới hạn kích thước file từ 5->100 kb. Nghĩa là sẽ bỏ qua file dưới 5KB và trên 100KB.

+www.example.com +*.gif -*.gif*[<5] -*.gif*[>100] 

Quét MIME Type File

Xác định nội dung của đường link. Bạn không biết chính xác URL trả về nội dung gì, có thể là html và có thể là data content. vd: www.example.com/dynamic.php trường hợp link này tạo image, pdf…
Sử dụng nguyên -*.gif sẽ không loại bỏ được trong URL tạo dữ liệu file động, bạn cần tham số mime
Ví dụ: -mime:image/gif,
+mime:image/gif'
-mime:*/* +mime:text/html +mime:image/gif

Xem thêm các mẫu patterns quét file tại địa chỉ: https://www.httrack.com/html/filters.html.

Trả lời

Email của bạn sẽ không được hiển thị công khai.