引言:采集论坛第一步就是要模拟登陆,由于各个站点登录表单各不相同,验证方式又是多种多样,所以直接提交用户名密码到登录页面就比较繁琐。
所以我们采用cookie来模拟登陆无疑是最佳捷径。

今天我们要处理的是模拟Discuz.net登陆:

切入主题


下面,我们通过三步骤来实现模拟登录操作,1.获得登录cookie,2.模拟请求,3.跳至目标实际操作页面。

准备工作

首先,我们手工登录一下,记录一下cookie。

dznet_cookietime=2592000;dznet_onlineusernum=7816;dznet_sid=QtlC87;dznet_auth=6bbeCQrzGv4eliNMLgU%2FlGZSpzbrsauGO1l0OBp6VQw5p0bcEg0xd4slYCM2ks%2FL0YCVYSO7XP2z8GMaxkPDUbXZCWft;checkpm=1

(目前主流浏览都有插件查看cookie)

P1.采用snoopy模拟登录

// 载入类库
include("snoopy.php");
// 实际对象
$snoopy = new Snoopy; // 设置浏览器引擎
// (说明:是浏览器信息,前面你用什么浏览器查看Cookie,就用那个浏览器的信息[PS: $_SERVER可以查看到浏览器的信息])
$snoopy->agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TheWorld)";
// 设置来源页面
$snoopy->referer = "http://www.discuz.net/";
// 设置Cookie
$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 $snoopy->results;

P2.采用curl模拟登录

// 登录网址
$url = "http://www.discuz.net/";
// 浏览器引擎
$useragent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TheWorld)";
// Cookie
$cookie = "dznet_cookietime=2592000;dznet_onlineusernum=7816;dznet_sid=QtlC87;dznet_auth=6bbeCQrzGv4eliNMLgU%2FlGZSpzbrsauGO1l0OBp6VQw5p0bcEg0xd4slYCM2ks%2FL0YCVYSO7XP2z8GMaxkPDUbXZCWft;checkpm=1"; // 初始化CURL对象
$ch= curl_init(); // 设置请求URL
curl_setopt($ch, CURLOPT_URL, $url);
// 设置Cookie
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); // 执行请求
curl_exec($ch);
// 获得页面内容
$tempCn = curl_multi_getcontent($ch);
// 关闭连接
curl_close($ch); // 输出页面内容
echo $tempCn;

今天先讲到这里吧!

未完待续……。

本站文章为宝宝巴士 SD.Team原创,转载务必在明显处注明:(作者官方网站:宝宝巴士
转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4792805.html

最新文章

  1. Java泛型的历史
  2. Thinkphp控制器,1.多层控制器2.多级控制器
  3. 用Canvas制作简单的画图工具
  4. Object.defineproperty实现数据和视图的联动
  5. Cordova webapp实战开发:(6)如何写一个iOS下获取APP版本号的插件?
  6. MVC 图片预览
  7. Cmockery macro demo hacking
  8. HD1049Climbing Worm
  9. jquery 预览提交的表单
  10. 【转】Oracle 10g RAC TAF
  11. 在mysql中修改表名的sql语句
  12. Linux 下 安装jdk 1.7
  13. 解决Sublime text 3 中文文件名显示方框
  14. 007.Adding a view to an ASP.NET Core MVC app -- 【在asp.net core mvc中添加视图】
  15. Java对象引用/JVM分级引用——强引用、软引用、弱引用、虚引用
  16. JavaFile I/O
  17. 53.CSS---CSS水平垂直居中常见方法总结
  18. Vue面试题
  19. Mybatis generator代码生成
  20. Fedora 19关闭防火墙

热门文章

  1. Codeforce 1251C. Minimize The Integer
  2. python进程/线程/协程
  3. checked 完整版全选,单选,反选
  4. search(9)- elastic4s logback-appender
  5. 2020 wannafly camp 补题 day1
  6. Maven安装本地jar包到本地仓库
  7. spring的单元测试
  8. 不需要爬虫也能轻松获取 unsplash 上的图片
  9. Java三大特征:封装 继承 多态
  10. 5.7.17版本mysqlbinlog实时拉取的二进制日志不完整的原因分析