2010-01-15 18 views
44

Tôi đang tìm cách tự động hóa một số tương tác trên web, cụ thể là tải xuống định kỳ các tệp từ một trang web bảo mật. Điều này về cơ bản liên quan đến việc nhập tên người dùng/mật khẩu của tôi và điều hướng đến URL thích hợp.Không đầu, Firefox/Webkit có thể đọc được trên linux?

Tôi đã thử kịch bản đơn giản bằng Python, tiếp theo là kịch bản phức tạp hơn, chỉ để khám phá trang web cụ thể này đang sử dụng một số cơ chế javascript và flash đáng ghét để đăng nhập, làm cho phương pháp của tôi vô dụng.

Sau đó tôi đã thử HTMLUnit, nhưng điều đó dường như không muốn hoạt động. Tôi nghi ngờ sử dụng Flash là vấn đề.

Tôi không thực sự muốn nghĩ về nó nữa, vì vậy tôi đang hướng tới việc viết kịch bản một trình duyệt thực tế để đăng nhập và lấy tệp tôi cần.

Yêu cầu là:

  • Chạy trên máy chủ Linux (tức là không có X chạy.). Nếu tôi thực sự cần phải có X tôi có thể làm điều đó xảy ra, nhưng tôi sẽ không hạnh phúc.
  • Hãy tin cậy. Tôi muốn bắt đầu điều này và không bao giờ nghĩ về nó một lần nữa.
  • Có thể viết được. Không có gì quá phức tạp, nhưng tôi có thể nói cho trình duyệt biết các bước khác nhau để thực hiện và các trang cần truy cập.

Có bộ công cụ tốt nào cho trình duyệt có kích thước không đầu, X không đọc được không? Bạn đã thử một cái gì đó như thế này và nếu như vậy bạn có bất kỳ từ nào của sự khôn ngoan?

Trả lời

17

Tôi đã thực hiện tác vụ liên quan với trình duyệt nhúng IE (mặc dù ứng dụng gui có bảng điều khiển thành phần ẩn). Trên thực tế, bạn có thể lấy bất kỳ layout engine và cắt logic đầu ra nào. Điều hướng nên được thực hiện thông qua các sự kiện giống như kịch bản lệnh.

Bạn có thể sử dụng Crowbar. Nó là phiên bản không đầu của firefox (động cơ Gecko). Nó biến trình duyệt thành máy chủ RESTful có thể chấp nhận các yêu cầu ("fetch url"). Vì vậy, nó phân tích cú pháp html, đại diện cho nó như là DOM, chờ đợi được xác định chậm trễ cho tất cả các kịch bản thực hiện.

Nó hoạt động trên linux. Tôi cho rằng bạn có thể dễ dàng mở rộng nó cho mục tiêu của bạn bằng cách sử dụng JS và khả năng XULrunner phong phú.

+0

Crowbar có hỗ trợ các yêu cầu POST http không? Tài liệu rất kém ... – hamczu

1

Tôi không biết cách thực hiện tương tác flash (và cũng quan tâm), nhưng đối với html/javascript bạn có thể sử dụng Chickenfoot.

Và để tải trình duyệt + headless script hoạt động trên Linux, bạn có thể sử dụng Qt webkit library. Here is an example use.

+0

Thansk Richard, có vẻ tốt, hãy để tôi dùng thử. – Parand

38

Còn khoảng phantomjs thì sao?

+1

PhantomJS là dễ dàng nhất để tích hợp và đang phát triển các cách tích hợp với các khung kiểm tra tự động. –

+2

Vâng, nhưng nếu bạn muốn mô phỏng một cái gì đó như đăng nhập vào một trang web và sử dụng cookie, chúc may mắn! –

+3

Phantomjs yêu cầu máy chủ X (http://code.google.com/p/phantomjs/issues/detail?id=33) –

8

Bạn đã thử Selenium chưa? Nó sẽ cho phép bạn ghi lại một kịch bản sử dụng, sử dụng một phần mở rộng cho Firefox, mà sau này có thể được phát lại bằng cách sử dụng một số phương pháp khác nhau.

Chỉnh sửa: Tôi vừa nhận ra đây là phản hồi rất muộn. :)

6

Hãy xem WebKitDriver. Dự án bao gồm việc thực hiện không đầu của WebKit.

-1

iMacros for Linux cho phép bạn kịch bản Firefox và Chrome: http://wiki.imacros.net/Linux

+0

Trong khi iMacros chạy trên Linux, hướng dẫn cụ thể mô tả kỹ thuật yêu cầu cài đặt DISPLAY, có nghĩa là nó không chạy không đầu, nhưng cần một môi trường cửa sổ. –

0

Để thực hiện điều này, tôi chỉ viết phần mở rộng Chrome gửi đến CouchDBs (exampleFuton của nó). Thêm Couch vào các quyền trong tệp kê khai để cho phép XHR tên miền chéo.

(Tôi đến chủ đề này để tìm kiếm một sự thay thế không đầu với những gì tôi đã làm; đã tìm thấy chủ đề này, tôi sẽ cố gắng xà beng tại một số điểm.)

Ngoài ra, xem xét kỳ lạ đặc điểm của trang web này, tôi không thể không tự hỏi liệu bạn có thể khai thác một số lỗ hổng bảo mật để có được xung quanh Flash và Javascript hay không.