采集論壇第一步就是要模拟登陸,由于各個站點登入表單各不相同,驗證方式又是多種多樣,是以直接送出使用者名密碼 到登入頁面就比較繁瑣。
是以我們采用cookie來模拟登陸無疑是最佳捷徑。
對象www.discuz.net
使用者名liuyuntest
密碼123456
一 首先我們手工登入下,記錄下cookie
dznet_cookietime=2592000;dznet_onlineusernum=7816;dznet_sid=QtlC87;
dznet_auth=6bbeCQrzGv4eliNMLgU%2FlGZSpzbrsauGO1l0OBp6VQw5p0bcEg0xd4slYCM2ks%2FL0YCVYSO7XP2z8GMaxkPDUbXZCWft;
checkpm=1
(目前主流浏覽都有插件檢視cookie)
二 采用snoopy模拟登入
- include("snoopy.php");
- $snoopy = new Snoopy;
- $snoopy->agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TheWorld)";//這項是浏覽器資訊,前面你用什麼浏覽器檢視cookie,就用那個浏覽器的資訊(ps:$_SERVER可以檢視到浏覽器的資訊)
- $snoopy->referer = "http://www.discuz.net/";
- $snoopy->rawheaders["COOKIE"]= "dznet_cookietime=2592000;dznet_onlineusernum=7816;dznet_sid=QtlC87;
- dznet_auth=6bbeCQrzGv4eliNMLgU%2FlGZSpzbrsauGO1l0OBp6VQw5p0bcEg0xd4slYCM2ks%2FL0YCVYSO7XP2z8GMaxkPDUbXZCWft;
- checkpm=1";
- $snoopy->fetch("http://www.discuz.net/post.php?action=newthread&fid=2&extra=page%3D1");//擷取發貼頁面
- echo $tempCn = $snoopy->results;
三 采用curl 模拟登入
- $url = "http://www.discuz.net/";
- $useragent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TheWorld)";
- $cookie = "dznet_cookietime=2592000;dznet_onlineusernum=7816;dznet_sid=QtlC87;
- dznet_auth=6bbeCQrzGv4eliNMLgU%2FlGZSpzbrsauGO1l0OBp6VQw5p0bcEg0xd4slYCM2ks%2FL0YCVYSO7XP2z8GMaxkPDUbXZCWft;
- checkpm=1";
- $ch= curl_init();
- curl_setopt($ch, CURLOPT_URL,$url);
- curl_setopt($ch, CURLOPT_COOKIE, $cookie);
- curl_setopt($ch, CURLOPT_REFERER, "http://www.discuz.net/index.php");
- curl_setopt($ch, CURLOPT_HEADER, false);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt ($ch, CURLOPT_USERAGENT, $useragent);