• Honeypots và Honeynets Một số công ty kinh doanh trong lĩnh vực mạng ví dụ như Amazon Cloud Front và CloudFlare sử dụng một mạng lưới các honeypots, còn được gọi là honeynets hoặc hone
Trang 1BÙI XUÂN GIANG
3+È775,ӆ1+ӊ7+Ӕ1*7+87+Ұ3 9¬/Ѭ875Ӳ'Ӳ/,ӊ870Ĉ7'Ҥ1*1RSQL
Chuyên ngành : +Ӌ7KӕQJ7K{QJ7LQ4XҧQ/ê
Mã sӕ 60 34 04 05
/8Ұ19Ă17+Ҥ&6Ƭ
73+Ӗ&+Ë0,1+WKiQJ12 QăP 2017
Trang 2&iQEӝKѭӟQJGүQNKRDKӑF 3*676ĈһQJ7UҫQ.KiQK
*KLU}KӑWrQKӑFKjPKӑFYӏ YjFKӳNê &iQEӝFKҩPQKұQ[pW 76/r/DP6ѫQ
*KLU}KӑWrQKӑFKjPKӑFYӏYjFKӳNê &iQEӝFKҩPQKұQ[pW 761JX\ӉQ7XҩQĈăQJ
*KLU}KӑWrQKӑFKjPKӑFYӏYjFKӳNê /XұQYăQWKҥFVƭÿѭӧFEҧRYӋWҥLTrѭӡng Ĉҥi hӑc Bách Khoa, ĈHQG Tp HCM ngày 29 tháng 12 QăP201 Thành phҫn Hӝi ÿӗng ÿinh giá luұn văn thҥc sƭ gӗm: (Ghi U}KӑWrQKӑFKjPKӑFYӏcӫa Hӝi ÿӗng chҩm bҧo vӋ luұn văn thҥc sƭ) 1 7675Ҫ10,1+48$1*
2 76/Ç/$06Ѫ1
3 761*8<ӈ17+$1+%Î1+
4 761*8<ӈ178Ҩ1ĈĂ1*
5 TS PHAN TRONG NHÂN
Xác nhұn cӫa Chӫ tӏch Hӝi ÿӗng ÿiQh giá LV và 7UѭӣQJKhoa quҧQ lý chuyên ngành sau khi luұn văn ÿã ÿѭӧc sӱa chӳa (nӃu có)
&+Ӫ7ӎ&++Ӝ,ĈӖ1* 75ѬӢ1*.+2$.+ & KTMT
Trang 3+ӑWrQKӑFYLrQBùi Xuân Giang MSHV: 7141135
1Jj\WKiQJQăPVLQK29/07/1984 1ѫLVLQK TP HCM
Ngành: +ӋWKӕQJWK{QJWLQTXҧQOê 0mVӕ : 60 34 04 05
I 7Ç1Ĉӄ7¬,3KiWWULӇQKӋWKӕQJWKXWKұSYjOѭXWUӳGӳOLӋX70Ĉ7GҥQJ1R64/
II 1+,ӊ09Ө9¬1Ӝ,'81*
;k\GӵQJӭQJGөQJJL~SKӛWUӧWKXWKұSGӳOLӋXFӫDFiFWUDQJZHEWKѭѫQJPҥLÿLӋQWӱWӯ ÿyOjPWLӅQÿӅFKRFiFF{QJFөSKkQWtFKYjWUtFK[XҩWWK{QJWLQ
&jLÿһWFѫVӣGӳOLӋX0RQJR'%ÿӇOѭXWUӳWRjQEӝGӳOLӋXWKXWKұSÿѭӧFӣGҥQJ1R64/ .
III NGÀY GIAO 1+,ӊ09Ө : 10/07/2017
IV 1*¬<+2¬17+¬1+1+,ӊ09Ө:03/12/2017
V &È1%Ӝ+ѬӞ1*'Ү1 : 3*676ĈһQJ7UҫQ.KiQK
Tp HCM, ngj\WKiQJQăP.
&È1%Ӝ+ѬӞ1*'Ү1
+ӑWrQYjFKӳNê
75ѬӢ1*.+2$.+ .707
+ӑWrQYjFKӳNê
Trang 4Tôi xin tỏ lòng kính trọng và biết ơn sâu sắc đối với thầy PGS.TS Đặng Trần Khánh đã trực tiếp tận tình hướng dẫn cũng như cung cấp tài liệu thông tin khoa học cần thiết cho luận văn này
Xin chân thành cảm ơn giảng viên Nguyễn Thanh Tùng đã nhiệt tình giúp
đỡ cho tôi trong công việc
Cuối cùng tôi xin chân thành cảm ơn tất cả thầy cô giảng dạy lớp cao học khóa
2014 đã cung cấp kiến thức và kinh nghiệm trong quá trình học tập để giúp tôi hoàn thiện Luận văn
Tôi hy vọng đề tài luận văn này sẽ là nguồn nguyên liệu tốt để giúp các bạn có nhu cầu thu thập dữ liệu của các trang web thương mại điện tử, nhằm mục đích riêng của mình có thể giảm bớt thời gian tìm hiểu từ đầu Tôi cũng mong các bạn
có thể phát triển và hoàn thiện các phần còn thiếu sót của đề tài này
Trang 5Trong đề tài luận văn của minh, tôi đã chia quá trình tìm hiểu và hiện thực mục tiêu theo t ừng giai đoạn tương ứng với các chương được trình bày như bên dưới : Chương 1 : Tìm hiểu tổng quan về thị trường thương mại điện tử từ đó đưa ra quy ết định cho việc lấy dữ liệu từ nguồn này có cần thiết và quan trọng hay không Chương 2 : Sau khi đã xác định mục tiêu rõ ràng tôi sẽ xác định phạm vi nghiên
c ứu của đề tài cũng như nêu lên ý nghĩa khoa học và ý nghĩa thực tiễn mà luận văn đề
c ập
Ch ương 3 : Luận văn tập trung vào trình bày cơ sở lý thuyết để hiện thực mục tiêu
đã đề ra, bao gồm các thư viện thu thập dữ liệu, các thức phân phối tác vụ thu thập dữ
li ệu đến các máy con, dữ liệu lớn và hệ quản trị cơ sở dữ liệu lớn NoSQL
Chương 4 : Dựa trên các nghiên cứu trong giai đoạn 3 này, tôi thực hiện phân tích
và thi ết kế hệ thống Sau đó, tôi tiến hành hiện thực và kiểm thử hệ thống bằng cách thu th ập dữ liệu các trang web thương mại điện tử đang hoạt động
Cu ối cùng, chương 5 nêu kết quả đạt được của luận văn, đóng góp của đề tài và hướng mở rộng của hệ thống
Trang 6goal in phases corresponding to the chapters presented below:
Chapter 1: An overview of the e-commerce market from which to make the decision to get data from this source is necessary and important
Chapter 2: After defining a clear goal I will define the scope of the research as well as the scientific meaning and practical meaning of the thesis
Chapter 3: Thesis focuses on presenting a theoretical basis for the realization of the objectives, including data collection libraries, task distributions, data collection to subsystems, data Large and large database management system NoSQL
Chapter 4: Based on the research in this phase 3, I perform system analysis and design Then, I implemented reality and tested the system by crawling active ecommerce sites
Finally, chapter 5 presents the results of the thesis, the contribution of the topic and the direction of the extension of the system
Trang 7L ỜI CAM ĐOAN
Tôi xin cam đoan số liệu và kết quả nghiên cứu trong luận văn này là trung thực
M ọi sự giúp đỡ cho việc thực hiện luận văn này đều đã được cảm ơn và mọi thông tin trích d ẫn trong luận văn đã được chỉ rõ nguồn gốc rõ ràng và được phép công bố
H ọc viên thực hiện
Bùi Xuân Giang
Trang 8M ỤC LỤC
CHƯƠNG 1 : TỔNG QUAN VỀ LUẬN VĂN 4
1.1 Giới thiệu sơ lược tình hình TMĐT 4
1.2 Ý nghĩa của luận văn 6
1.2.1 Ý nghĩa khoa học 6
1.2.2 Ý nghĩa thực tiễn 6
1.3 Mục tiêu, giới hạn và đối tượng nghiên cứu 7
1.3.1 Mục tiêu nghiên cứu 7
1.3.2 Giới hạn nghiên cứu của đề tài 7
1.3.3 Đối tượng nghiên cứu 7
1.4 Cấu trúc luận văn 8
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT VÀ CÁC CÔNG TRÌNH NGHIÊN CỨU LIÊN QUAN 10
2.1 Các công trình nghiên cứu liên quan 10
2.2 Cách thức thu thập dữ liệu, phân loại website và các thư viện hỗ trợ 19
2.2.1 Cách thức thu thập dữ liệu 19
2.2.2 Phân loại website cần thu thập dữ liệu 19
2.2.3 Một vài thư viện hỗ trợ xây dựng công cụ crawler 20
2.3 Giới thiệu về dữ liệu lớn- Big Data 37
2.4 Kho chứa dữ liệu 40
2.4.1 Khái quát 40
2.4.2 Tại sao lại chọn MongoDB? 41
2.4.3 Kiến trúc tổng quát 41
2.4.4 Cơ chế hoạt động chi tiết của MongoDB 43
CHƯƠNG 3 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 55
3.1 Nghiệp vụ hệ thống 55
Trang 93.2 Kiến trúc hệ thống thu thập dữ liệu 57
3.2.1 Kiến trúc hệ thống thu thập dữ liệu dạng 1 57
3.2.2 Kiến trúc hệ thống thu thập dữ liệu dạng 2 59
CHƯƠNG 4 THỰC NGHIỆM VÀ ĐÁNH GIÁ 60
4.1 Cài đặt và kiểm thử công cụ thu thập dữ liệu dạng 1 60
4.2 Đặc điểm nổi bật của công cụ thu thập dữ liệu dạng 1 64
4.3 Cài đặt và kiểm thử công cụ thu thập dữ liệu dạng 2 65
CHƯƠNG 5 KẾT LUẬN 68
Trang 10Hình 1 : Báo cáo s ố lượng website TMĐT trong 3 năm gần đây (BC của Bộ Công
Thương) 5
Hình 2 Ki ến trúc hệ thống thu thập dữ liệu 14
Hình 3 Mô hình làm vi ệc của RabbitMQ 15
Hình 4 Ki ến trúc Hive 17
Hình 5 Ch ạy ứng dụng Spark trên YARN trong chế độ cluster 18
Hình 6 Ví d ụ về chức năng load web site của phantomJS 32
Hình 7 Hình ảnh trang web sẽ được load bởi PhantomJS 33
Hình 8 M ột demo về giả lập trình duyệt trên Iphone 34
Hình 9 Hình ảnh trang web được giả lập load trên IOS 35
Hình 10 Demo v ề thời gian loading một website được đo bởi phantomjs 36
Hình 11 Mô hình ki ến trúc của Big Data 39
Hình 12 Ví d ụ về MongoDB document 42
Hình 13 So sánh gi ữa RDBMS và MongoDB 42
Hình 14 So sánh Table v ới Collection 43
Hình 15 Mongos 44
Hình 16 Các b ản sao dữ liệu trong một shard 45
Hình 17 : 4 kho ảng cho 4 shard [a,f), [f,n), [n,t), [t,{) 45
Hình 18 Gi ới hạn lại khoảng cho shard 1 sang shard 2 46
Hình 19 Chuy ển dữ liệu sang shard tiếp theo 47
Hình 20 Thêm m ới shard rồi chia đều dữ liệu 48
Hình 21 Không liên ti ếp các khoảng cho phép ta lấy ra 49
Hình 22 Chuy ển 100GB của mỗi shard ném vào shard 5 50
Hình 23 Chia m ột chunk ra thành hai 52
Hình 24 N ếu cần bằng real time, sẽ có những tài nguyên bị di chuyển lãng phí 54
Hình 25 S ố điện thoại bị mã hóa thành hình ảnh 56
Hình 26 Các thành ph ần kiến trúc của hệ thống thu thập dữ liệu dạng 1 57
Hình 27 Mô hình Use Case Diagram c ủa công cụ dạng 1 58
Hình 28 Mô hình ki ến trúc công cụ thu thập dữ liệu dạng 2 59
Hình 29 Giao di ện nhập URL website 60
Hình 30 Giao di ện nhập category trên web Admin 61
Hình 31 Giao di ện App Android khi chưa load web site mục tiêu 62
Hình 32 Giao di ện trên điện thoại Android sau khi load Website mục tiêu 63
Hình 33 Danh sách các task đang thực thi trên giao diện Website Admin 64
Hình 34 Hàm load ng ẫu nhiên danh sách các url của trang web mục tiêu 65
Hình 35 Hàm x ử lý Scroll view ngẫu nhiên và xử lý giản cách theo thời gian 65
Hình 36 Các file và thư mục của công cụ thu thập dữ liệu dạng 2 66
Hình 37 N ội dung file script để khởi chạy công cụ 67
Hình 38 K ết quả xuất ra màn hình trong khi công cụ crawl hoạt động 67
Trang 11CHƯƠNG 1 : TỔNG QUAN VỀ LUẬN VĂN
1.1 Giới thiệu sơ lược tình hình TMĐT
Giai đoạn 5 năm trở lại đây, tình hình ứng dụng TMĐT trong doanh nghiệp không chỉ còn tập trung tại các thành phố lớn mà đã mở rộng trên phạm vi cả nước Nhiều mô hình kinh doanh mới, đa dạng đã hình thành và được doanh nghiệp vận hành, triển khai
Gần 100% doanh nghiệp đã tổ chức triển khai ứng dụng TMĐT ở nhiều quy mô
và mức độ khác nhau Việc tham gia hoạt động TMĐT trên mạng xã hội của đại bộ
phận doanh nghiệp bán lẻ và người tiêu dùng cùng với việc ứng dụng các giải pháp TMĐT trên nền tảng công nghệ di động cho thấy doanh nghiệp Việt Nam đã nhanh
nhạy bắt kịp các xu hướng mới về TMĐT của thế giới để phục vụ hiệu quả cho
hoạt động sản xuất kinh doanh của mình, nâng cao năng lực cạnh tranh
Ứng dụng TMĐT trong cộng đồng đã trở thành một trào lưu rộng khắp Năm
2015, giá trị mua hàng trực tuyến của một người ước tính đạt khoảng 160 USD và doanh số TMĐT B2C đạt 4,07 tỷ USD
60/63 tỉnh, thành phố ban hành Kế hoạch phát triển TMĐT của địa phương nhằm triển khai Quyết định 1073 cho thấy mức độ quan tâm cũng như hành động thiết
thực của các địa phương trong việc nỗ lực bắt kịp với sự phát triển của lĩnh vực tương đối mới mẻ này (Báo cáo TMĐT năm 2015)
Trang 12Hình 1 : Báo cáo s ố lượng website TMĐT trong 3 năm gần đây (BC của Bộ Công Thương)
Trong số các loại hình website thương mại điện tử đang phát triển tại Việt Nam, các trang web của doanh nghiệp bán hàng cho người tiêu dùng (business-to-customer - B2C) đang chiếm ưu thế lớn Tuy nhiên, với xu hướng tiêu dùng thông minh hơn, tiết kiệm hơn, nhiều người dùng đang tìm đến các mặt hàng đã dùng qua (second hand) với giá rẻ hơn mà chất lượng vẫn không thua kém hàng mới Vì vậy, các trang web cho phép người dùng đăng tin quảng cáo hàng của mình (customer-to-customer - C2C) đang ngày càng gia tăng quy mô của mình và đe dọa đến các website B2C Khoảng 20 website C2C lớn ở Việt Nam được nhiều người tin dùng như chotot.vn, vatgia.com, batdongsan.com.vn,…
Với bất kỳ doanh nghiệp nào, hiểu được xu hướng phát triển của thị trường là chìa khóa quan trọng để dẫn đến thành công, nhất là với các doanh nghiệp mà sự sinh tồn phụ thuộc hoàn toàn vào người dùng như trang web C2C Và cách tìm
hiểu thị trường tốt nhất chính là thu thập và thống kê các mẫu tin quảng cáo không
chỉ trên trang web của mình mà còn trên trang web của đối thủ Hiện nay, hầu hết các doanh nghiệp C2C đều có bộ phận làm công việc nghiên cứu thị trường, tuy
Trang 13tay, cùng với một số phần mềm đơn giản như Microsoft Access, Microsoft Excel…
Với hàng trăm nghìn mẩu tin quảng cáo được đăng lên một trang web mỗi ngày,
khối lượng công việc của các nhân viên nghiên cứu thị trường thật sự rất lớn và phương pháp làm của họ rõ ràng không hiệu quả
Đứng trước nhu cầu cần có một công cụ hiệu quả để thu thập và phân tích dữ
liệu từ các website thương mại điện tử là rất lớn Tuy nhiên, việc thu thập này không hề đơn giản vì các website này thường có các chính sách chống lại việc lấy
dữ liệu này Từ đó tác giả đã quyết định chọn đề tài “Phát triển hệ thống thu thập
và lưu trữ dữ liệu TMĐT dạng NoSQL” để làm luận văn cho mình
Đề tài này sẽ tìm hiểu các cách làm việc của các thư viện hỗ trợ crawler hiện nay
và lựa chọn 1 bộ thư viện phù hợp với mục đích nghiên cứu Tiếp theo sẽ xây dựng
bộ công cụ giả lập hành vi khách hàng dựa trên thư viện đã chọn lựa trước đó
1.2 Ý nghĩa của luận văn
• Hỗ trợ thông tin giúp cho doanh nghiệp kinh doanh, đầu tư trở nên sáng
suốt hơn, nhận dạng xu hướng thị trường tốt hơn Tiếp cận các phương pháp phân tích thị trường thương mại điện tử một cách khoa học
Trang 14• Giúp các tổ chức chính phủ đánh giá chính xác tình hình TMĐT của Việt Nam để có chiến lược phát triển bền vững và hiệu quả
1.3 Mục tiêu, giới hạn và đối tượng nghiên cứu
1.3.1 Mục tiêu nghiên cứu
• Từ việc nghiên cứu các công trình khoa học liên quan, tác giả nhận thấy rằng
giải quyết việc chống lại quá trình thu thập dữ liệu là vô cùng cần thiết, vì nếu không thu thập được dữ liệu thì việc phát triển hệ thống lưu trữ và thống kê dữ
liệu đều là dư thừa Từ đó mục tiêu của đề tài đặt ra là làm sao phát triển một hệ
thống thu thập dữ liệu gần giống nhất với hành vi duyệt web của con người nhất
nhằm đánh lừa các công cụ anti-crawling cũng như các quản trị viên
• Tối ưu bộ công cụ thu thập dữ liệu để tránh bị phát hiện bởi các hệ thống phòng
chống crawler tự động cũng như từ các quản trị viên website
1.3.2 Giới hạn nghiên cứu của đề tài
Đề tài này chỉ xoay quanh vấn đề phát triển hệ thống thu thập dữ liệu của các website TMĐT Các vấn đề khác bao gồm đánh giá độ tin cậy của dữ liệu thông qua việc so sánh lệch dữ liệu hay đánh giá tiềm năng của các website thông qua các kết quả so sánh, đề tài này sẽ không đề cập đến
1.3.3 Đối tượng nghiên cứu
Các định dạng và bố cục của trang web TMĐT chotot.vn để có thể thu thập các URL và sau đó là lấy các dữ liệu từ các trang web này
Các thư viện hỗ trợ việc thu thập dữ liệu hiện nay trên thế giới như: JSoup, Spider,…
MongoDB là một cơ sở dữ liệu NoSQL hỗ trợ đa nền tảng, nó có thể chạy trên Windows, Linux và Mac Nó hỗ trợ hầu hết các ngôn ngữ lập trình phổ biến như C#, Java, PHP, Javascript và các môi trường phát triển khác nhau
Trang 151.4 Cấu trúc luận văn
• Chương 1: Tổng quan về báo cáo:
o Giới thiệu tóm tắt sơ lược nội dung yêu cầu và độ cấp thiết của bài toán xây
dựng công cụ crawler trong việc thu thập dữ liệu từ các trang web thương mại điện
tử
o Các đối tượng cần nghiên cứu
o Tóm lược lý do chọn đề tài, mục tiêu cần phải thực hiện được của bài toán, các giới hạn, phạm vi, hướng tiếp cận của luận văn
o Giới thiệu về cấu trúc luận văn
• Chương 2: Cơ sở lý thuyết và các công trình nghiên cứu liên quan
o Giới thiệu các công trình nghiên cứu liên quan đến đề tài
o Cách thức thu thập dữ liệu, các thư viện hỗ trợ
o Thu thập dữ liệu
o Giới thiệu về dữ liệu lớn- Big Data
o Kho chứa dữ liệu
o Xử lý, phân tích dữ liệu
o Trực quan hóa dữ liệu
• Chương 3 : Phân tích và thiết kế hệ thống
o Phân tích dữ liệu từ các trang web thương mại điện tử
o Xây dựng công cụ crawler dữ liệu giả lập hành vi khách hàng
• Chương 4 : Thực nghiệm và đánh giá
o Đưa vào thử nghiệm công cụ crawler dữ liệu
o Thu thập dữ liệu
• Chương 5 : Kết luận
o Kết quả đạt được
o Các hạn chế còn tồn đọng
Trang 16o Đóng góp của đề tài
o Ý nghĩa khoa học và thực tiễn
• Phần cuối cùng của bài báo cáo là danh mục tài liệu tham khảo và phần phụ lục
Trang 17CHƯƠNG 2 CƠ SỞ LÝ THUYẾT VÀ CÁC CÔNG TRÌNH
NGHIÊN CỨU LIÊN QUAN
2.1 Các công trình nghiên cứu liên quan
a Trong một nghiên cứu của Alex Stolz và Martin Hepp với tên bài báo là Towards Crawling the Web for Structured Data: Pitfalls of Common Crawl for E-Commerce đến từ đại học Bundeswehr Munich, Đức Nghiên cứu đã chỉ
ra rằng việc thu thập dữ liệu từ các site map do website thương mại điện tử cung cấp là không chính xác vì nó thiếu phần lớn các trang chi tiết của sản
phẩm Từ đó rút ra kết luận rằng quá trình thu thập dữ liệu từ các trang TMĐT không được dựa vào các sitemap được cung cấp bởi chính các website đó
b Một nghiên cứu khác đến từ Junghoo Cho Đại học California, Los Angeles và Hector Garcia-Molina đến từ đại học Stanford đồng đứng tên cho một bài báo nghiên cứu có tên : Parallel Crawlers Bài nghiên cứu đã đưa ra giải pháp cho
việc thu thập dữ liệu thông qua xử lý song song trong trường hợp dữ việc của web site cần lấy tăng lên quá nhanh và quá lớn
c Bài báo của Sanjay Singh từ Manipal University mang tên Anti-Scraping Application Development đã đưa ra các cách khác nhau để chống lại việc thu
thập dữ liệu
o Black list : khi có phát hiện thu thập dữ liệu từ 1 IP nào đó thì người quản trị
sẽ đưa IP này vào danh sách IP bị cấm và sẽ không có phép bất kỳ giao tiếp nào từ IP này đến website của mình
o Gray list: danh sách các IP có các hành động đáng ngờ khi truy cập đến website, nếu từ IP này thao tác liên tục điền sai CAPTCHAs thì khi đó IP này sẽ được đưa vào Gray list để theo dõi các sai phạm
Trang 18o White list: Đây là một danh sách các IP hoàn toàn bình thường và hợp pháp
Từ đây web site chỉ việc căn cứ vào danh sách này để chấp nhận việc truy
cập
Một kỹ thuật quan trọng khác là chi địa chỉ IP thành các bảng nhỏ dựa vào từng khu vựa khác nhau Từ các bảng này web site sẽ tiến hành lọc các IP thuộc black list, gray list hay chưa xác định Chúng ta có thể chia nhỏ khu vực ra nếu như số lượng truy cập website từ 1 khu vực nào đó rất lớn
Các kỹ thuật phát hiện xâm nhập còn đến từ:
• Thông tin của trình duyệt
Hầu hết các chương trình thu thập dữ liệu tự động thường không thể cung
cấp các thông tin như phông chữ hệ thống, chi tiết plugin trình duyệt như khi dùng một trình duyệt nào đó Ngoài ra mỗi trình duyệt thường có các đặc trưng rất độc đáo khó mà có thể làm giả Do đó chỉ cần xây dựng bộ
lọc để nhận các thông tin được cung cấp khi có giao tác duyệt web xảy
ra, nếu không thể cung cấp các thông tin trên thì lập tức được đưa vào gray list và buộc phải xác thực thông qua CAPTCHA nếu muốn vào white list
• Thường xuyên thay đổi Markup
Markup của một website nên được thường xuyên thay đổi một các tự động nhưng không phải là thay đổi trên diện rộng hay toàn bộ cấu trúc website Hầu hết các chương trình thu thập dữ liệu dựa vào tên của các
lớp và id của các thẻ đánh dấu để xác định phần cần thu thập dữ liệu Thường xuyên thay đổi tên lớp và id của các phần khác nhau một cách tự động là cách được chứng minh là khác hiệu quả trong việc phá vỡ quá trình thu thập dữ liệu của chương trình Tuy nhiên việc thay đổi thường xuyên cấu trúc sẽ gây khó chịu cho nhưng người dùng thực
Trang 19Một phương pháp để ngăn chặn quá trình thu thập là trình bày các thông tin như là một phần của hình ảnh, và không phải là văn bản dạng text Thông tin văn bản bình thường có thể được chuyển đổi sang hình ảnh trên phía máy chủ và sau đó có thể được hiển thị đến người dùng Những người thu thập dữ liệu có thể dùng phần mềm Optical Character Recognition (OCR) để lấy được dữ liệu từ hình ảnh Tuy nhiên, phương pháp hiển thị thông tin dưới dạng hình ảnh không phải hiệu quả trong
thời đại ngày ngày nay, bởi vì các thư viện OCR đã trở nên rất phát triển Ngoài ra việc cố ý làm nhòe dữ liệu trong hình ảnh sẽ dẫn đến phiền toái
từ người sử dụng chân chính và có thể ảnh hưởng đến lượng truy cập của trang web Dữ liệu còn có thể được trình bày như là các đoạn flash hoặc HTML5 canvas thay vì hình ảnh
• Phân tích tần suất
Đây là phương pháp dựa vào số lần truy cập của khách đến trang web tại
từng thời điểm Khi đã có số lần truy cập thì một lần nữa các danh sách đen, xám và trắng sẽ được sử dụng Tuy nhiên phương pháp này cũng không chính xác tuyệt đối vì việc truy xuất nhiều ít của người dùng tùy thuộc vào nhu cầu và nội dung của trang web tại thời điểm đó
• Phân tích lưu lượng dữ liệu
Đây là một phương pháp quan trọng được sử dụng trong những năm gần đây Thực tế cho thấy rằng các hệ thống thu thập dữ liệu thường dùng
giải pháp thay đổi IP liên tục hoặc dùng proxy để tránh bị phát hiện Tuy nhiên việc lưu lượng dữ liệu bị thu thập từ một nguồn nào đó là không
thể che giấu được Phương pháp được đề xuất là việc thu thập lưu lượng
dữ liệu đi đến một đích nào đó, ở lần đầu tiên ta sẽ gom cụm dữ liệu sau
đó dùng biến rồi rạc Fourier để làm giảm kích thước của mẫu Tuy nhiên
Trang 20phương pháp này đòi hỏi các mẫu thử phải đầy đủ và phải được thu thập trong một thời gian dài
• Phân tích URL
Phương pháp phân tích URL được viếng thăm cũng là một các phát hiện xâm nhập Việc phân tích này dựa vào quá trình viếng thăm lặp đi lặp lại
một URL nào đó của trang web Hay các URL được duyệt theo một thứ
tự nhất định thì việc theo dõi đối tượng sẽ được thiết lập
• Honeypots và Honeynets
Một số công ty kinh doanh trong lĩnh vực mạng ví dụ như Amazon Cloud Front và CloudFlare sử dụng một mạng lưới các honeypots, còn được gọi
là honeynets hoặc honeyfarms khắp thế giới để nắm bắt thông tin về các
hệ thống thu thập, và chuyển tiếp thông tin này cho các ứng dụng của họ trên toàn thế giới qua bản cập nhật định kỳ hoặc các phương pháp khác Các trang honeypot nhỏ có thể được triển khai trên các trang web để phát
hiện hoàn toàn tự động thu thập thông tin của các hệ thống thu thập dữ
Trang 21e Công trình nghiên cứu trong nước : Đề tài nghiên cứu khoa học của sinh viên khoa Khoa học và Kỹ Thuật Máy Tính thuộc Đại Học Bách Khoa TP HCM năm 2016 về phát triển hệ thống thu thập, lưu trữ và thống kê dữ liệu của các website TMĐT ở Việt Nam
Thu thập dữ liệu
Kiến trúc thu thập dữ liệu của hệ thống:
Hình 2 Ki ến trúc hệ thống thu thập dữ liệu
Kiến trúc hệ thống gồm ba tầng căn bản:
• Crawler: Thu thập dữ liệu từ các website và lưu trữ thành một tập dữ liệu
• Kiểm tra dữ liệu crawl: Kiểm tra từng dữ liệu lấy được từ tầng crawler có bị sai lệch hay không (quá nhiều giá trị null liên tiếp trên một thuộc tính bất kỳ) Nếu dữ liệu bị sai lệch quá nhiều trên một tập dữ liệu bất kỳ thì hệ thống sẽ cảnh báo cho người vận hành biết để có thể điều chỉnh lại việc
Trang 22crawler và tự động xóa tập dữ liệu này, ngược lại thì tập dữ liệu sẽ được đưa xuống tầng dưới để thực hiện việc lưu trữ
• Đẩy dữ liệu vào kho: Dùng để thực hiện việc đưa dữ liệu vào trong kho chứa
dữ liệu lớn
Phân phối tác vụ
Phân phối tác vụ với RabbitMQ, RabbitMQ là một message broker oriented middleware) sử dụng giao thức AMQP - Advanced Message Queue Protocol (Đây là giao thức phổ biến, thực tế RabbitMQ hỗ trợ nhiều giao thức) RabbitMQ được lập trình bằng ngôn ngữ Erlang RabbitMQ cung cấp cho lập trình viên một phương tiện trung gian để giao tiếp giữa nhiều thành phần trong một hệ
(message-thống lớn (ví dụ openstack) RabbitMQ sẽ nhận message đến từ các thành phần khác nhau trong hệ thống, lưu trữ chúng an toàn trước khi đẩy đến đích
Hình 3 Mô hình làm vi ệc của RabbitMQ
Kho chứa dữ liệu
Kho chứa dữ liệu với Apache Hive, Apache Hive là một kho dữ liệu (data warehouse) hỗ trợ người sử dụng có thể dễ dàng hơn trong việc quản lý và truy vấn đối với các tập dữ liệu lớn được lưu trữ trên các hệ thống lưu trữ phân tán
Trang 23(distributed storage) Hive được xây dựng dựa trên cơ sở của Apache Hadoop, nó cung cấp các tính năng chinh sau:
• Công cụ cho phép dễ dàng thực hiện tác vụ như trích xuất, vận chuyển và lưu trữ dữ liệu
• Cơ chế để xử lý cho nhiều định dạng dữ liệu khác nhau
• Truy cập tới dữ liệu dạng files được lưu trữ trực tiếp ở trong Apache HDFS hoặc đối với nhiều hệ thống lưu trữ dữ liệu khác như Apache HBase
• Thực hiện query thông qua MapReduce
Trang 24Hình 4 Ki ến trúc Hive
Xử lý, phân tích dữ liệu
Xứ lý, phân tích dữ liệu sử dụng Apache Spark, một framework tính toán trên cluster được phát triển bởi AMPLab tại Đại học California, Berkeley Sau đó, framework được Apache Software Foundation quản lý Nó ngược lại với mô hình hai giai đoạn trên đĩa cứng của MapReduce, mô hình nhiều giai đoạn trên bộ nhớ trong của Spark nhanh gấp 100 lần đối với một số ứng dụng Vì cho phép tải dữ
liệu lên RAM của cluster và truy vấn nó nhiều lần, Spark rất phù hợp để chạy các
giải thuật học máy
Trang 25Hình 5 Ch ạy ứng dụng Spark trên YARN trong chế độ cluster
Trên đây là một mô hình hệ thống thu thập, lưu trữ và phân tích dữ liệu hoàn
chỉnh Tuy nhiên bên cạnh đó vẫn còn tồn đọng một vài bài toán quan trọng cần
giải quyết, trong đó có 2 bài toán chính :
• Chống lại quá trình ngăn chặn việc thu thập dữ liệu của hệ thống gọi tắt là anti – “anti crawling”
• Xác thực độ chính xác của dữ liệu thu thập được từ các website TMĐT
Để giải bài toán thứ 1: Ayman Mohammed Mohammed đến từ IBM đã đưa ra một
số giải pháp để chống lại quá trình anti crawling như sau :
o Các website thường chặn IP của server thu thập dữ liệu khi phát hiện hành vi này, giải pháp đưa ra là sử dụng nhiều proxy để ẩn IP thật của server đang thu thập dữ liệu
Trang 26o Vượt qua xác thực CAPTCHA do phần lớn dịch vụ web và trình duyệt cho phép chúng ta không cần xác thực bằng CAPTCHA, và hầu hết CAPTCHA của các website TMĐT rất yếu
o Các website thường tạo ra nhiều tài khoản đăng nhập hệ thống khác nhau
để cung cấp cho khách hàng, điều này sẽ gây phiền toán cho khách hàng đang sử dụng website Và để chống lại việc ngăn chặn này ta có thể dùng
một giải thuật để tạo hàng loạt các tài khoản khác nhau
2.2 Cách thức thu thập dữ liệu, phân loại website và các thư viện hỗ trợ
2.2.1 Cách thức thu thập dữ liệu
Các dữ liệu hiển thị trên một trang web đều được biểu diễn bằng HTML.Vì
thế, chúng ta sẽ dựa vào đoạn mã HTML của trang web đó để lấy những thông tin mà ta cần lấy
Chúng ta sẽ phân loại website để lấy dữ liệu làm 3 loại:
• Website khi dùng phương thức HTTP GET sẽ lấy được HTML có chứa tất
cả thông tin hiển thị trên trang web
• Website khi dùng phương thức HTTP GET sẽ lấy được HTML chỉ chứa các đoạn mã javascript để sinh ra HTML khi được tải bằng trình duyệt
• Website khi dùng phương thức HTTP GET sẽ lấy được HTML có một
phần chứa một số thông tin được hiện thị trên website và phần còn lại sẽ
chứa javascript để sinh ra HTML khi được tải bằng trình duyệt
2.2.2 Phân loại website cần thu thập dữ liệu
Để thuận tiện ta sẽ quy ước các loại website để lấy dữ liệu từ trên xuống là
loại I, loại II, loại III Chúng ta sẽ cùng nói qua cách xử lý trên từng loại:
• Loại I: Trong 3 loại website để lấy dữ liệu thì loại I là loại cơ bản nhất và
dễ dàng lấy dữ liệu nhất Ta chỉ cần dùng HTTP GET để lấy HTML và lấy
ra những thông tin nằm trên đó Việc phân tích HTML để có thể lấy chính
Trang 27• Loại II: Đây là một loại website vô cùng phức tạp để xây dựng Và hầu hết các website mới được xây dựng đều áp dụng mô hình này để xây dựng Các website này đều có Web-API vô cùng mạnh mẽ để tương tác với cơ sở dữ
liệu Nhìn chung có hai cách để lấy được dữ liệu của loại website này
Thứ nhất là đọc hiểu cấu trúc mã nguồn để tìm ra Web-API và dựa vào đó
lấy được thông tin lưu trữ trong database Đối với cách thức này, thời gian
lấy dữ liệu khá nhanh vì tốc độ truy xuất database dựa vào Web-API đã được tối ưu Nhưng hạn chế của việc làm này là cần phải có kiến thức khá
rộng đối với các nền tảng web, và có thể sẽ không thể tìm được Web-API
nếu trang web có sử dụng các tool để rút gọn source code (minification)
Thứ hai là giả lập browser để sinh ra HTML chứa thông tin cần lấy Và từ
đó, sử dụng lấy dữ liệu như loại I Giải pháp này giúp ta có thể dễ dàng lấy được thông tin mà không cần quá nhiều hiểu biết về các nền tảng web, đồng thời có thể xử lý được khi trang web có sử dụng các tool để rút gọn source code (minification) Tuy nhiên, hạn chế của cách này là thời gian và tài nguyên máy để lấy dữ liệu tiêu tốn nhiều hơn rất nhiều lần so với cách
thứ nhất, vì phải giả lập browser để chạy
• Loại III: Đây là một loại website kết hợp giữa loại I và loại II Nên cách xử
lý sẽ dùng các phương pháp nêu trong loại I, loại II để xử lý
2.2.3 Một vài thư viện hỗ trợ xây dựng công cụ crawler
Thư viện Jsoup
a Giới thiệu sơ lược về parser và công cụ Jsoup
• Parsing là một cách để lấy được thông tin và dữ liệu trên một trang web
dựa vào cách parse đoạn mã HTML của trang web đó lưu thành một cây dữ liệu Và chúng ta có thể dựa vào cây dữ liệu đó lấy ra thông tin
mà ta cần lấy trên trang web đó
Trang 28• Jsoup là một thư viện parser hỗ trợ đắc lực từ việc lấy dữ liệu trên trang web với các tính năng chính: xử lý được các cấu trúc HTML phức tạp lấy từ trang web và từ đó tạo ra một kết quả phân tích (parse) rõ ràng giúp chúng ta lấy những thành phần dữ liệu trong một trang web dựa vào đoạn mã HTML của trang web đó Ngoài ra, nó hỗ trợ mạnh mẽ trong việc xử lý các HTML phức tạp hoặc không rõ ràng
b Mô hình đối tượng của một Document trong Jsoup
Document trong Jsoup bao gồm các thành phần HTML là Elements và TextNode Các chuỗi thừa kế: Document được thừa kế từ Element và Element được thừa kế từ Node Mỗi Element bao gồm một số lượng các Node con và có một Element khác làm lớp cha (parent) của nó Và ngoài
ra mỗi Element còn cung cấp danh sách Filter dành riêng cho các lớp con
của nó (child elements)
c Các giải pháp xử lý input để parse một Document trong Jsoup
• Parse một Document với đầu vào là một chuỗi kí tự
Vấn đề đưa ra: Chúng ta có đầu vào HTML hiện đang là một kiểu String Và chúng ta muốn parse đoạn string HTML đó để lấy ra dữ liệu
mà chúng ta cần, hoặc để kiểm tra thử nó có đúng dạng hay chưa, hoặc chỉnh sửa đoạn HTML đó Đoạn String HTML đó có thể đến từ các source code của các trang web
Giải pháp xử lý: Sử dụng phương thức static Jsoup.parse(String html), hoặc Jsoup.parse(String html, String baseUri) Ví dụ:
String html = <html><head><title>Firstparse</title></head>" +
"<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);
Trang 29Mô tả quá trình xử lý: Phương thức parse(String html, String baseUri) parse input HTML vào một Document mới Thông số baseURI được sử dụng để chuyển đổi những URL quan hệ thành URL tuyệt đối, và nên được gán bằng URL nơi tài liệu được lấy Nếu như không được, hoặc nếu như chúng ta biết HTML đó có một Element cơ
sở, chúng ta có thể sử dụng phương thức parse(String html)
Khi chúng ta đã có một Document, chúng ta có thể lấy được thông tin bằng cách sử dụng những hàm thích hợp trong Document, cũng như các Element và Node của nó
• Parse một đoạn thân HTML
Vấn đề đưa ra: Chúng ta có một đoạn thân HTML (ví dụ: một div chứa một cặp tag p) mà chúng ta muốn parse
Jsoup.parseBodyFragment(String html), ví dụ:
String html = "<div><p>Lorem ipsum.</p>";
Document doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();
Mô tả quá trình xử lý: Phương thức parseBodyFragment tạo một
Document trống, và nhập mã HTML parse được vào body Element Nếu chúng ta sử dụng phương thức Jsoup.parse(String html) thông thường, chúng ta cũng sẽ có được kết quả tương tự, nhưng việc xem input như là một đoạn thân rõ ràng đảm bảo được bất cứ đoạn HTML
nào được cung cấp bởi người dùng cũng sẽ được parse vào Element
Trang 30Phương thức Document.body() lấy được những Element con trong Element của Document Nó cũng giống với phương thức
doc.getElementsByTag(“body”)
• Tải một Document từ một URL
Vấn đề đưa ra: Chúng ta cần lấy và parse một HTML Document từ web, và tìm dữ liệu bên trong nó
Giải pháp xử lý: Sử dụng phương thức Jsoup.connect(String url), ví dụ: Document doc = Jsoup.connect("http://example.com/").get();
String title = doc.title();
Mô tả quá trình xử lý: Phương thức connect(String url) tạo một kết nối
mới, và get() lấy và parse một file HTML Nếu như có lỗi xuất hiện trong quá trình lấy một URL, sẽ có một IOException được quăng ra, trong trường hợp này ta cần xử lý IOException thích hợp Connection interface được thiết kế cho việc chaining method để xây dựng một yêu
cầu cụ thể:
Document doc = Jsoup.connect("http://example.com") data("query", "Java")
.userAgent("Mozilla") cookie("auth", "token") timeout(3000)
.post();
Phương thức này hỗ trợ web URL (giao thức http và https), nếu chúng
ta cần phải load dữ liệu từ một file, sử dụng phương thức parse(File in, String charsetName) thay cho phương thức này
• Tải một Document từ tệp tin
Trang 31Vấn đề đưa ra: Chúng ta có một tệp tin chứa dữ liệu HTML mà chúng
ta cần tải và parse để có thể trích xuất thông tin từ nó
Giải pháp xử lý: Sử dụng phương thức static Jsoup.parse(File in, String charsetName, String baseUri), ví dụ:
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8",
"http://example.com/");
Mô tả quá trình xử lý: Phương thức parse(File in, String charsetName,
String baseUri) tải và parse một file HTML Nếu như có lỗi xuất hiện trong lúc tải file, sẽ có một IOException được quăng ra, ta cần xử lý IOException này một cách thích hợp
Thông số baseUri được sử dụng bởi parser để xử lý những URL quan
hệ trong Document trước khi một <base href> Element được tìm thấy Nếu như điều đó không quan trọng với chúng ta, chúng ta có thể truyền một chuỗi rỗng
Có một phương thức tương tự parse(File in, String charsetName) mà sử dụng đường dẫn của file như là một baseUri Phương thức này rất hữu ích nếu như chúng ta làm việc trên một trang web hệ thống file cục bộ
và đường link của nó cũng trên file system
• Các giải pháp xử lý trích xuất dữ liệu để parse một Document trong Jsoup
Sử dụng những phương thức DOM để thao tác trên Document Vấn đề
là chúng ta có một đoạn HTML mà chúng ta muốn trích xuất dữ liệu Chúng ta đã biết cấu trúc của một HTML Document
Trang 32Giải pháp xử lý: Sử dụng một phương thức kiểu DOM có sẵn sau khi
parse HTML vào một Document File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8",
"http://example.com/");
Element content = doc.getElementById("content");
Elements links = content.getElementsByTag("a");
for (Element link : links) { String linkHref = link.attr("href");
String linkText = link.text();
}
Mô tả quá trình xử lý: Những Element cung cấp một lượng các phương
thức kiểu DOM để tìm những Element, và trích xuất và thao tác trên những dữ liệu của nó Những phương thức lấy dữ liệu DOM hoạt động tùy theo ngữ cảnh: nếu được gọi ở một Document cha, các phương thức
sẽ tìm những Element phù hợp ở Document đó, còn nếu gọi ở Element con, các phương thức sẽ tìm những Element ở Element con đó Bằng cách này, chúng ta có thể sàng lọc dữ liệu
Một vài ví dụ tìm kiếm kiếm Element và thao tác trên HTML:
getElementById(String id) getElementsByTag(String tag) getElementsByClass(String className) append(String html)
prepend(String html)
Trang 33prependText(String text) appendElement(String tagName)
• Sử dụng selector-syntax để tìm kiếm các Element
Vấn đề đưa ra: Chúng ta muốn tìm hoặc thao tác các Element bằng cách
sử dụng CSS hoặc các selector syntax giống jquery
Giải pháp xử lý: Sử dụng các phương thức Element.select(String selector) và Elements.select(String selector):
File input = new File("/tmp/input.html");
// a with href Document doc = Jsoup.parse(input, "UTF-8",
"http://example.com/"); Elements links = doc.select("a[href]");
// img with src ending png Elements pngs = doc.select("img[src$=.png]");
// div with class=masthead Element masthead = doc.select("div.masthead").first();
// direct a after h3 Elements resultLinks = doc.select("h3.r > a");
Mô tả quá trình xử lý: Những Element của Jsoup hỗ trợ selector syntax
kiểu giống như CSS (hoặc jquery) để tìm kiếm những Element phù hợp, nhờ đó nó cho phép thực hiện những truy vấn khó Phương thức select
có sẵn trong Document, Element hoặc trong Elements, là một phương thức theo ngữ cảnh, do đó chúng ta có thể lọc thông qua việc chọn những Element cụ thể hoặc bởi chaining những lời gọi select
Select trả về một danh sách các Element, cung cấp một lượng phương thức để trích xuất và thao tác trên kết quả
Trang 34• Trích xuất thuộc tính (attribute), dữ liệu text và HTML từ những Element
Vấn đề đưa ra: Sau khi parse một Document, và tìm một số Element, chúng ta có thể sẽ muốn lấy những dữ liệu bên trong các Element này Giải pháp xử lý: Để lấy giá trị của một attrubute, sử dụng phương thức Node.attr(String key) Với text của một Element (cùng với các con của nó), sử dụng Element.text() Với HTML, sử dụng Element.html(), hoặc Node.outerHtml() Ví dụ:
String html = "<p>An <a href='http://example.com/'><b>example</b></a> link.</p>";
Document doc = Jsoup.parse(html);
Element link = doc.select("a").first();
String text = doc.body().text(); // "An example link"
String linkHref = link.attr("href");
// "http://example.com/"
String linkText = link.text(); // "example"
String linkOuterH = link.outerHtml();
Giải pháp xử lý: Đảm bảo chắc rằng ta định rõ một base URL khi parse
Sử dụng tiền tố abs: attribute để phân giải một URL tuyệt đối từ một
Trang 35Document doc = Jsoup.connect("http://jsoup.org").get();
Element link = doc.select("a").first();
String relHref = link.attr("href"); // == "/"
String absHref = link.attr("abs:href"); // "http://jsoup.org/"
Trong các HTML Element, những URL thường được viết dưới dạng quan hệ mà liên quan đến địa chỉ của Document:
<a href="/download"> </a> Khi chúng ta sử dụng phương thức Node.attr(String key) để lấy một attribute href, nó sẽ trả về kết quả như
đã được đặc tả trong HTML nguồn
Đây là một thư viện "GUI-Less browser for Java programs" dùng để mô hình tài liệu HTML, là một trong những bộ Web Automation Testing tốt, với các tính năng:
• API của nó khá mạnh, cho phép chúng ta kích hoạt trang web, điền thông tin form, submit form, click link…
• Hỗ trợ tốt Javascript và cả những thư viện AJAX phức tạp
• Có thể giả lập được Internet Explorer, Firefox và Chrome
Một vài thao tác cơ bản của HTMLUnit như sau:
• Tạo một web client và tải trang chủ từ trang web Sau đó xác thực tính đúng đắn của tiêu đề trang web Phương thức getPage() có thể trả về nhiều kiểu trang dựa trên loại nội dung của dữ liệu trả về Trong trường hợp này
ta mong đợi kiểu nội dung text/html nên ta ép kết quả thành kiểu HtmlPage public void homePage() throws Exception {
final WebClient webClient = new WebClient();
Trang 36try (final WebClient webClient = new WebClient()) { final HtmlPage page =
final String pageAsText = page.asText();
Assert.assertTrue(pageAsText.contains("Support for the HTTP and HTTPS protocols"));
} }
• Giả lập một trình duyệt Hiện thực bằng cách truyền BrowserVersion vào WebClient constructor
public void homePage_Firefox() throws Exception { try (final WebClient webClient = new
WebClient(BrowserVersion.FIREFOX_38)) { final HtmlPage page =
webClient.getPage("http://htmlunit.sourceforge.net");
Assert.assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText());
} }
Trang 37• Khi đã tham khảo đến HtmlPage, ta có thể tìm kiếm cho một HtmlElement
cụ thể bằng cách dùng phương thức get hoặc sử dụng XPath
public void xpath() throws Exception { try (final WebClient webClient = new WebClient()) { final HtmlPage page =
} }
• Điền và submit form
public void submittingForm() throws Exception { try (final WebClient webClient = new WebClient()) { // Get the first page
final HtmlPage page1 = webClient.getPage("http://some_url");
// Get the form that we are dealing with and within that // form, find the submit button and the field that we want // to change
final HtmlForm form = page1.getFormByName("myform");
final HtmlSubmitInput button = form.getInputByName("submitbutton");
Trang 38final HtmlTextInput textField = form.getInputByName("userid"); // Change the value of the text field
Thư viện Phantomjs
Phantomjs là một trình duyệt chính xác hơn phantomjs là một “headless browser” Khác với các trình duyệt thông thường chúng ta hay sử dụng như Chrome, Firefox… chúng ta sẽ thực hiện trực tiếp các thao tác với website thông qua giao diện được hiển thị bởi các trình duyệt này thì với phantomjs chúng ta sẽ tương tác với website thông qua các câu lệnh mà không quan tâm đến giao diện
Một số demo:
a Mặc dù không trực tiếp nhìn được giao diện của website nhưng phantomjs
có thể chụp lại ảnh giao diện thông qua đó chúng ta có thể kiểm tra được giao diện của website Sau đây sẽ là demo nhỏ về hoạt động truy cập và chụp ảnh website của phantomjs:
B1: Tạo file sample.js với cấu trúc như sau:
Trang 39Hình 6 Ví d ụ về chức năng load web site của phantomJS
B2: Gõ lệnh sau ở cmd: phantomjs sample.js http://google.com pageRender Trong đó:
• google.com sẽ là website chúng ta truy cập
• pageGender là tên file ảnh chụp lại website
Sau khi chạy lệnh ở trên chúng ta sẽ được kết quả như sau : Cmd: Hiển thị dòng chữ: Image render is done!
Folder chứa file sample.js có file ảnh chụp website như sau:
... chống lại trình thu thập liệu vơ cần thiết, khơng thu thập liệu việc phát triển hệ thống lưu trữ thống kêliệu dư thừa Từ mục tiêu đề tài đặt phát triển hệ
thống thu thập liệu gần giống... Kỹ Thu? ??t Máy Tính thu? ??c Đại Học Bách Khoa TP HCM năm 2016 phát triển hệ thống thu thập, lưu trữ thống kê liệu website TMĐT Việt Nam
Thu thập liệu
Kiến trúc thu thập liệu hệ thống: ... Kiến trúc hệ thống thu thập liệu dạng 57
3.2.2 Kiến trúc hệ thống thu thập liệu dạng 59
CHƯƠNG THỰC NGHIỆM VÀ ĐÁNH GIÁ 60
4.1 Cài đặt kiểm thử công cụ thu thập liệu dạng