PhantomJS 模拟登录一

"use strict";

var webpage = require('webpage');
var page = webpage.create();

/// 登录页
page.open('https://signin.sandbox.ebay.com/ws/eBayISAPI.dll', function (status) {
	if (status === "success") {
		var cookies = page.cookies;
		for(var i in cookies) {
			console.log(cookies[i].name + '=' + cookies[i].value);
		}
		//console.log(page.content);
		page.close();

		/// 登录
                // 需要提取其它的表单字段
		var postData = 'userid=testuser_xxx&pass=xxx';

		var login = webpage.create();
		login.open('https://signin.sandbox.ebay.com/ws/eBayISAPI.dll?co_partnerId=2&siteid=0&UsingSSL=1', 'POST', postData, function (status) {
		  if (status === "success") {

			var cookies = login.cookies;
			var saveData = '';
			for(var i in cookies) {
				console.log(cookies[i].name + '=+' + cookies[i].value);
				saveData += cookies[i].name+"="+cookies[i].value+"&";
			}

			//console.log(login.content);
			login.close();

			///	成功登录后发送数据
			var save = webpage.create();
			save.open('http://120.24.42.192:7070/i.php', 'POST', saveData, function (status) {
			  if (status === "success") {

				console.log(save.content);
				save.close();

				///
			  }
			  phantom.exit();
			});
		  } else {
			 console.log("Login Failed...");
			 phantom.exit();
		  }
		  
		});
	} else {
		phantom.exit();
	}
});

这里的phantom可以看做是浏览器进程,调用exit()方法表示直接关闭浏览器。page相当于浏览器中的Tab(开一个tab,跟建一个page概念相同),Tab或叫page打开以后,需要给一个URL,然后把这些个内容加载回来,然后在浏览器中就可以点击了,而在PhantomJs中,需要通过接口去模拟点击,要操作这个page,可以玩的花样很多,比如往这个page中注入一段JS,包含一个JS文件,修改DOM的内容,提交表单等等。page的evaluate方法一定程度上,可以看做是