使用PHP curl模拟浏览器抓取网站信息

 更新时间:2013年10月28日 16:02:30   作者:   我要评论
curl是一个利用URL语法在命令行方式下工作的文件传输工具。curl是一个利用URL语法在命令行方式下工作的文件传输工具。

官方解释
curl是一个利用URL语法在命令行方式下工作的文件传输工具。curl是一个利用URL语法在命令行方式下工作的文件传输工具。
它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。curl同样支持HTTPS认证,HTTP POST方法, HTTP PUT方法, FTP上传, kerberos认证, HTTP上传, 代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,
上载文件断点续传, http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器, 通过http代理服务器上传文件到FTP服务器等等,功能十分强大。

curl讲解一

PHP中curl函数应用
简单的来说一共四步
curl_init();
curl_setopt();
curl_exec();
curl_close();

最重要的命令就是 curl_setopt();

一个简单的post请求例子
index.php

复制代码 代码如下:

<?php
$url = "http://www.mytest.com/curl/login.php";  //请求的url地址
$user = "zkg111"; //用户名
$pass = "123456";
$postdata = "user_name=".$user."&password=".$pass;  //请求的数据,以 & 符号分割
$curl = curl_init(); //开启curl
curl_setopt($curl, CURLOPT_URL, $url); //设置请求地址
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  //是否输出 1 or true 是不输出 0  or false输出
curl_setopt($curl, CURLOPT_POST, 1); //是否使用post方法请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);  //post数据

 
echo $data = curl_exec($curl); //执行curl操作
curl_close($curl);
?>

 下面一个简单的例子,我随便打开了兄弟连的论坛,接着就模拟了一下兄弟连论坛的登陆,如果需要发帖的话原理都是一样的,转接页面,提交数据
特别注意的是cookie的保存目录 windows7下面必须是在./temp目录下,开始我自己创建了一个新文件夹,发现存是对的,但是cookie读取的时候不对,为此还在好多地方
提问,但是没有回答对的,折腾了好几天该了保存文件为./temp目录下才可以的,提醒别的朋友别和我一样瞎转
复制代码 代码如下:

<?php
$url = "http://bbs.lampbrother.net/login.php";
$urls = "http://bbs.lampbrother.net";
$lgt = 0;
$user = "XXXX";
$pass = "XXXX";
$question = 0;
$hideid = 1;
 $cookie_file    =    tempnam('./temp','cookie');
 $postdata = "forward=&jumpurl=".$urls."&step=2&lgt=".$lgt."&pwuser=".$user."&pwpwd=".$pass."&question=".$question."&answer=&hideid=".$hideid;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
 $data = curl_exec($ch);
curl_close($ch);
 //echo $data;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://bbs.lampbrother.net/');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_exec($ch);
curl_close($ch);
?>

相关文章

  • 在WordPress的后台中添加顶级菜单和子菜单的函数详解

    在WordPress的后台中添加顶级菜单和子菜单的函数详解

    这篇文章主要介绍了在WordPress的后台中添加顶级菜单和子菜单的函数详解,需要的朋友可以参考下
    2016-01-01
  • php木马攻击防御之道

    php木马攻击防御之道

    本文通过介绍一些技巧介绍了针对PHP木马攻击的防御之道,通过这些方面您能够更好的防范木马程式。
    2008-03-03
  • php array_merge下进行数组合并的代码

    php array_merge下进行数组合并的代码

    array_merge();合并两个数组,如果数组的键名是字符,而且两个数组的键名是相同的字符,
    2008-07-07
  • php eval函数用法总结

    php eval函数用法总结

    这个函数我想很多朋友都知道,黑客用得最多的一句了,可以解析php 代码并且运行哦,eval是函数不可在php中禁止,以前我就以为可以在php.ini禁止此函数,结果失败了
    2012-10-10
  • php及codeigniter使用session-cookie的方法(详解)

    php及codeigniter使用session-cookie的方法(详解)

    下面小编就为大家带来一篇php及codeigniter使用session-cookie的方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • PHP中危险的file_put_contents函数详解

    PHP中危险的file_put_contents函数详解

    file_put_contents() 函数把一个字符串写入文件中。最近发现file_put_contents函数有一直没注意到的问题,所以下面这篇文章主要给大家介绍了关于PHP中危险的file_put_contents函数的相关资料,需要的朋友可以参考借鉴,下面来一起看吧。
    2017-11-11
  • php获取参数的几种方法总结

    php获取参数的几种方法总结

    本篇文章要是对php获取参数的几种方法进行了总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02
  • php抽象方法和普通方法的区别点总结

    php抽象方法和普通方法的区别点总结

    在本篇文章里小编给大家分享的是关于php 抽象方法和普通方法的区别的相关文章,有需要的朋友们可以学习下。
    2019-10-10
  • 学习php设计模式 php实现建造者模式

    学习php设计模式 php实现建造者模式

    这篇文章主要介绍了php设计模式中的建造者模式,使用php实现建造者模式,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • PHPMailer安装方法及简单实例

    PHPMailer安装方法及简单实例

    PHPMailer是一个用PHP写的用于邮件发送的类,有点像Jmail,相信很多新手和我一样,开始很茫然,不知道怎么安装,查找了一下,发现这方面的资料真的少之又少,一个文章被转载千百次,一搜索全是同一个内容,真不知道说什么好,其实打开安装里的readme就一目了然了,闲话少说,安装其实很简单。
    2008-11-11

最新评论