CURL传输与获取功能

什么是CURL?
利用URL语法爱命令行方式下工作的文件传输工具。它支持很多协议。它支持认证功能。php中常用都实现更复杂的传输功能。
实现的功能:
1、实现远程获取和采集内容
2、实现PHP 网页版的FTP上传下载
3、实现模拟登陆:去一个邮件系统,curl可以模拟cookies
4、实现接口对接(API),数据传输等:通过一个平台发送短信啊,抓取和传递所传输的信息。
5、实现模拟Cookie等:登陆的状态下才可以操作一些属性。

如何使用CURL功能:
默认情况加PHP是不支持CURL的,需要在php.ini中开启该功能
;extension=php_curl.dll前面的分号去掉
1  整个操作过程中第一步是用cur_init()函数进行初始化
$curl = curl_init(‘www.php100.com’)
2.用curl_setopt()函数进行设置选项。
3.设置后,进行执行事务 curl_exec($curl);
4 最后关闭curl_close();

使用PHP CURL实现传输和获取功能(post传输方式):获取远程网页数据
$user = "admin";
$pass = "admin100";
$curlPost = "user=$user&pass=$pass";
$ch = curl_init(); //初始化一个CURL对象
curl_setopt($ch, CURLOPT_URL, "http://localhost/edu/login.php");
//设置你所需要抓取的URL
curl_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);
实现远程模拟登陆最基础部分。
curl也还是需要配置用户名和密码的,只不过是被浏览器隐藏了。
============================================================================
curl模拟登陆

模拟登陆:就是不登陆到php100的论坛,也能查看到相应的信息。
分析登陆字段--->登陆后保留cookie状-->读取cookie并跳转到相关页-->抓取数
1、模拟登陆后创建一个文件保存cookie内容
2、通过读取生成的cookie内容模拟用户登陆状态
3、到相关页面获取所需内容

tempname创建一个临时文件
tempnam() 函数创建一个具有唯一文件名的临时文件。若成功,则该函数返回新的临时文件名。若失败,则返回 false。
tempnam(dir,prefix)
参数 描述
dir 必需。规定创建临时文件的目录。
prefix 必需。规定文件名的开头。
相当于,fopen ? fwirte ? fclose
它可以返回一个布尔值。使用第三方来登陆你的QQ、msn是很危险的,因为它可以记录你的登录状态,抓取你的用户名和密码。

使用CURL模拟登陆到PHP100论坛

1、分析登陆所需input框字段名和所需字段数量

2、保存cookie 模拟登陆后获取会员金币数量

code:

<?php

//初始化一个 cURL 对象
$curl = curl_init();

//设置你需要抓取的URL
curl_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=$pass";
$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);

?>

<?php
if($_POST[‘user‘]=="admin"){
 echo "<script>alert(‘成功‘)</script>";
}else{
 echo "<script>alert(‘失败‘)</script>";
}
//print_r($_POST);
?>

=====

模拟登陆代码

pw_php100.php
<?php
$cookie_file=tempnam(‘./temp‘,‘cookie‘);
$login_url="http://bbs.php100.com/login.php";
$post_fields="cktime=3600&step=2&pwuser=php100&pwpwd=11111";
$ch=curl_init($login_url);
curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com";
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
$data = curl_exec($ch);
curl_close($ch);

$url="http://bbs.php100.com/userpay.php";
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
$contents = curl_exec($ch);
preg_match("/<li>金钱:<\/li>/",$contents,$arr);
echo $arr[1];
curl_close($ch);

?>

======

login.php

<?php

print_r($_POST);

?>

====================

curl.php
<?php

$curlPost = "user=$user&pass=$pass";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/edu/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);
?>

CURL传输与获取功能

时间: 2024-09-29 05:37:01

CURL传输与获取功能的相关文章

java11-3 String类的获取功能

package cn_String2;/* String类的获取功能 int length():获取字符串的长度. char charAt(int index):获取指定索引位置的字符 int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引. 为什么这里是int类型,而不是char类型? 原因是:'a'和97其实都可以代表'a' int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引. int indexOf(int ch,int

5.15 String类的获取功能

/*  * String类的获取功能  * int length():获取字符串的长度.  * char charAt(int index):获取指定索引位置的字符  * int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引.  *  为什么这里是int类型,而不是char类型?  *  原因是:'a'和97其实都可以代表'a'  * int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引.  * int indexOf(int

Java基础知识强化78:正则表达式之获取功能(Pattern 和 Matcher类的使用)

1. 获取功能: Pattern 和 Matcher类结合使用 2. 使用案例: 1 package cn.itcast_05; 2 3 import java.util.regex.Matcher; 4 import java.util.regex.Pattern; 5 6 /* 7 * 获取功能 8 * Pattern和Matcher类的使用 9 * 10 * 模式和匹配器的基本使用顺序 11 */ 12 public class RegexDemo { 13 public static v

Thinkphp3.2.3框架下封装公共的函数,例如封装CURL函数来获取接口数据

当我们需要在控制层调用相同的封装函数时,写多次相同的函数,显得代码十分的拉杂,不精简: TP框架有一个很好的机制,可以再Common定义一个function.php函数,当我们在控制层调用的时候直接调用就可以使用,方便快捷: 具体实现方便如下: 我们可以再三个地方设置公共的函数function.php (注意:function.php默认是不存在的,需手动创建) 根目录\Application\Common\Common\function.php(公共的函数,Home和Admin都可以调用) 根

Java基础知识强化79:正则表达式之获取功能(案例)

1. 获取下面这个字符串中由三个字符组成的单词. da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu? 2. 代码实现: 1 package cn.itcast_05; 2 3 import java.util.regex.Matcher; 4 import java.util.regex.Pattern; 5 6 /* 7 * 获取功能: 8 * 获取下面这个字符串中由三个字符组成的单词 9 * da j

curl用法:获取网站的header头及状态码

curl命令最常用的方法是使用参数-I 获取域名或IP的header信息,包括HTTP返回状态码,server类型,文本类型,缓存时间等等:监控web服务时也常用此方法判断web服务是否正常: 监控web服务,可以使用curl获取网站的header头,查看返回值是否是200 OK,作为判断web服务正常的一个标准: 使用curl -I 可以获取,如果提取第一行信息时,会出现一些不需要的信息,那我们该怎么取呢? [[email protected] ~]$ curl -I mofansheng.b

添加curl的openssl的功能,实现https的正确访问

公司开发部遇到一个难题,服务器环境的curl的功能参数无法支持ssl,那么很多功能将会无法实现.那么好吧,这个问题只好抛到运维这边了,我也是个新手,下边的见解纯属个人分析(如有问题,欢迎讨论): 首先系统:Centos 6.5 x86_64, 服务器版本的默认安装路径:curl在/usr下,openssl在/usr下  (当然,版本都是挺低的,yum更新后,版本还是很低,而且理所当然的,yum安装是无法带参数的,那么很显然,更新后curl还是无法支持openssl) 安装所有常用的开发包yum

Java基础知识强化34:String类之String类的获取功能

1. String类的获取功能 int length() char charAt(int index) int indexOf(int ch) int indexOf(String str) int indexOf(int ch, int fromIndex) int indexOf(String str,int fromIndex) String substring(int start) String substring(int start,int end) 2. 案例: 1 package

Android(java)学习笔记103:Map集合的获取功能

1 package cn.itcast_01; 2 3 import java.util.Collection; 4 import java.util.HashMap; 5 import java.util.Map; 6 import java.util.Set; 7 8 /* 9 * 获取功能: 10 * V get(Object key):根据键获取值 11 * Set<K> keySet():获取集合中所有键的集合 12 * Collection<V> values():获取