curl 抓取网页(php中常用都实现更复杂的传输功能(post传输方式) )
优采云 发布时间: 2022-02-01 10:03curl 抓取网页(php中常用都实现更复杂的传输功能(post传输方式)
)
CURL 是一个文件传输工具,它使用 URL 语法在命令行模式下工作。它支持许多协议。支持认证功能。比较复杂的传输函数一般用php实现。
实现的功能:
1、远程访问和采集内容
2、实现PHP网页版FTP上传下载
3、实现模拟登录:去一个邮件系统,curl可以模拟cookies
4、 实现接口对接(API)、数据传输等:通过平台发送短信,捕获并传输传输的信息。
5、实现模拟cookies等:有些属性只能在登录状态下操作。
如何使用CURL函数:
PHP默认不支持CURL,需要在php.ini中开启该功能
;extension=php_curl.dll 去掉分号
1整个操作的第一步是使用cur_init()函数进行初始化
$curl = curl_init(‘www.gaodaima.com')
3.设置完成后,执行事务 curl_exec($curl);2.使用 curl_setopt() 函数设置选项。
4 最后关闭 curl_close();
使用PHP CURL实现传输和获取功能(后传方式):获取远程网页数据
$user = "admin";$pass = "admin";$curlPost= "user=$user&pass=$pass";$ch = curl_init(); //初始化一个CURL对象curl_setopt($ch, CURLOPT_URL,"http://localhost/edu/login.php");//设置你所需要抓取的URLcurl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);//设置curl参数,要求结果是否输出到屏幕上,为true的时候是不返回到网页中假设上面的0换成1的话,那么接下来的$data就需要echo一下。curl_setopt($ch, CURLOPT_POST, 1);//post提交curl_setopt($ch, CURLOPT_POSTFIELDS,$curlPost);$data = curl_exec($ch);//运行curl,请求网页。curl_close($ch);[/code]
实现远程模拟登录最基本的部分。
curl还需要配置用户名和密码,但是被浏览器隐藏了。
================================================ === =================================\
curl 模拟登录
模拟登录:即使不登录php100论坛,也可以查看相应信息。
分析登录字段->登录后保留cookie->读取cookie并跳转到相关页面->抓取次数
1、模拟登录后创建文件保存cookie内容
2、通过读取生成的cookie内容模拟用户登录状态
3、去相关页面获取你需要的东西
tempname 创建一个临时文件
tempnam() 函数创建一个具有唯一文件名的临时文件。如果成功,该函数返回新的临时文件名。失败时返回 false。
tempnam(目录,前缀)
参数说明
dir 必需。指定创建临时文件的目录。
前缀是必需的。指定文件名的开头。
相当于,fopen fwirte fclose
它可以返回一个布尔值。使用第三方登录你的QQ和msn是非常危险的,因为它可以记录你的登录状态,并窃取你的用户名和密码。
使用CURL模拟登录PHP100论坛
1、分析输入框字段名和登录所需字段个数
2、保存cookie模拟登录,获取会员金币数量
代码:
//初始化一个 cURL 对象$curl = curl_init();//设置你需要抓取的URLcurl_setopt($curl, CURLOPT_URL," http://www.baidu.com ");//设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//运行cURL,请求网页$data = curl_exec($curl);//关闭URL请求curl_close($curl);$user = "admin";$pass = "admin100";$curlPost= "user=$user&pass=$pa本文来源gaodai#ma#com搞*!代#%^码$网!搞代gaodaima码ss";$ch = curl_init();curl_setopt($ch, CURLOPT_URL," http://localhost/curl/login.php ");curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS,$curlPost);$data = curl_exec($ch);curl_close($ch);?>if($_POST['user']=="admin"){ echo"";}else{ echo"";}//print_r($_POST);?>