2009-06-05 5 views
11

Tôi đã tìm cách để thực hiện việc này trong một thời gian nhưng vẫn chưa thể tìm được đúng cách để thực hiện điều đó.Giải thích và thực thi Javascript tùy ý trong Linux CLI

Nhiệm vụ: Thực thi Javascript từ dòng lệnh Linux.

Ví dụ: có nhị phân hoặc bất kỳ thứ gì sẽ diễn giải Javascript tải lên một số tệp .js, sau đó in giá trị của một số biến.

Ví dụ cụ thể hơn: Tôi muốn nhận phiên bản cuối cùng của trang này sau khi Javascript đã được diễn giải và thực hiện http://www.vureel.com/video/2809/American-Dad. Nếu bạn nhìn vào trang với Firebug, bạn sẽ thấy rằng tối nghĩa javascript này

<script language="JavaScript" type="text/javascript">/*<![CDATA[*/var a,s,n;function a8bcb4f34dfd6e81cfdb9c115d1671582(s){r="";for(i=0;i<s.length;i++){n=s.charCodeAt(i);if(n<128){n=n ... etc ...</script>

biến thành một mã nhúng đẹp

<embed height="390" width="642" flashvars="file=http://vureel-cdn-2.vureel.com/leechingisillegal/537c69afbcaf4c7cf416f30077bbe9d1/4a29621d/here/2809.flv ...etc .../>

Đây chỉ là một ví dụ nhưng hy vọng bạn xem những gì Tôi đang lái xe.

+0

Tôi nghĩ câu hỏi của bạn nên được đổi tên thành một cái gì đó như "Làm thế nào tôi có thể lấy nguồn trang sau khi JS đã được thực hiện". Tôi không nghĩ rằng một mô tả làm thế nào để thực thi mã với v8 sẽ giúp bạn, phải không? –

Trả lời

3

Loại lái xe của bạn tại hai điểm khác nhau 1) thực thi javascript bên ngoài trình duyệt 2) xem kết quả của javascript trên trang web.

Đối với vấn đề đầu tiên, mozilla tê giác là một trình thông dịch javascript chạy trong java. Bạn có thể thực thi javascript thông qua một dòng lệnh.

Đối với vấn đề thứ hai, hãy xem tab dom trong Firebug, bạn có thể thấy các phần tử tài liệu kết quả sau khi javascript đã chạy.

Hoặc bạn có thể bật gỡ lỗi tập lệnh, lưu bản sao cục bộ của trang và chèn vào đó một bản sửa lỗi(); tuyên bố.

+0

fyi - lưu ý cuối cùng là mẹo chiến thắng/hình ảnh và bạn nói rằng bạn đang sử dụng linux, vì vậy có thể không áp dụng –

+0

Tôi đang xem Spidermonkey tại thời điểm này vì có một thư viện Perl có thể nói chuyện với nó. Tê giác như xa như tôi hiểu là khá nhiều điều tương tự nhưng đối với Java chứ không phải là C. –

+0

Đối với vấn đề thứ hai, giải pháp của bạn chỉ là tốt như nhìn vào đầu ra của Firebug, nhưng tôi cần để có thể nhận được nó trên dòng lệnh, do đó, việc sử dụng trình duyệt không phải là một tùy chọn. –

2

Tôi nghĩ bạn muốn thực hiện một số thao tác cạo trong khi thực thi javascript. env.js được mô tả trong http://ejohn.org/blog/bringing-the-browser-to-the-server/ có thể hữu ích. Tôi đã cố gắng để thử nó trên một số công cụ của tôi nhưng không thể cho việc thiếu thời gian và giải quyết với các kịch bản trang web cụ thể.

+0

Rất thú vị. Trông rất, rất tốt. –

+0

Nếu bạn đi với env.js, đã có một số công việc kể từ phiên bản trong blog để làm cho nó phù hợp với trình duyệt tốt hơn. Mã này có tại http://github.com/jeresig/env-js/tree/master. Ngoài ra còn có một số chi nhánh với chức năng bổ sung. –

2

Hãy xem http://phantomjs.org/

Đó là một trình duyệt web không đầu, vì vậy, bạn có thể xây dựng các dom và vận dụng nó như bạn sẽ ở một trình duyệt thực . Rõ ràng bạn có thể xuất kết quả.

0

Nếu bạn thích Python, bạn có thể lấy ghost.py từ GitHub, cho phép bạn tạo trình duyệt WebKit không đầu và điều khiển nó từ bên trong tập lệnh Python của bạn. Tôi đã sử dụng này tương tác thông qua các máy tính xách tay IPython và nó đã làm việc khá tốt ra khỏi hộp. Tôi mở rộng nó để làm việc với BeautifulSoup, và nó thật tuyệt.