PHP CURL获取cookies模拟登录


利用PHP的curl函数实现模拟登录的方法。

要提取google搜索的部分数据,发现google对于软件抓取它的数据屏蔽的厉害,以前伪造下 USER-AGENT 就可以抓数据,但是现在却不行了。利用抓包数据发现,Google 判断了 cookies,当你没有cookies的时候,直接返回 302 跳转,而且是连续几十个302跳转,根本抓不了数据。

因此,在发送搜索命令时,需要先提取 cookies 并保存,然后利用保存下来的这个cookies再次发送搜索命令即可正常抓数据了。这其实和论坛的模拟登录一个道理,先POST登录,获取cookies并保存,然后利用这个cookies访问就可以了。

PHP 代码如下:

  1. <?php
  2. header('Content-Type: text/html; charset=utf-8');
  3. $cookie_file = dirname(__FILE__).'/cookie.txt';
  4. //$cookie_file = tempnam("tmp","cookie");
  5. //先获取cookies并保存
  6. $url ="http://www.google.com.hk";
  7. $ch = curl_init($url);//初始化
  8. curl_setopt($ch, CURLOPT_HEADER,0);//不返回header部分
  9. curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);//返回字符串,而非直接输出
  10. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);//存储cookies
  11. curl_exec($ch);
  12. curl_close($ch);
  13. //使用上面保存的cookies再次访问
  14. $url ="http://www.google.com.hk/search?oe=utf8&ie=utf8&source=uds&hl=zh-CN&q=qq";
  15. $ch = curl_init($url);
  16. curl_setopt($ch, CURLOPT_HEADER,0);
  17. curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
  18. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);//使用上面获取的cookies
  19. $response = curl_exec($ch);
  20. curl_close($ch);
  21. echo $response;
  22. ?>

本文永久更新链接地址

相关内容

    暂无相关文章