PHP中使用CURL(六)

curl常用的几个例子

1、抓取无访问控制文件

1 <?php
2  $ch = curl_init();
3  curl_setopt($ch, CURLOPT_URL, "http://localhost/mytest/phpinfo.php");
4  curl_setopt($ch, CURLOPT_HEADER, false);
5  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果把这行注释掉的话,就会直接输出
6  $result=curl_exec($ch);
7  curl_close($ch);
8  ?>

2、使用代理进行抓取

<?php
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, "http://blog.snsgou.com");
 curl_setopt($ch, CURLOPT_HEADER, false);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
&nbsp;curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);
&nbsp;curl_setopt($ch, CURLOPT_PROXY, 125.21.23.6:8080);
&nbsp;//url_setopt($ch, CURLOPT_PROXYUSERPWD, ‘user:password‘);如果要密码的话,加上这个
 $result=curl_exec($ch);
 curl_close($ch);
 ?>

3、post数据后,抓取数据

<?php
$ch = curl_init();
$data = array(‘name‘ => ‘test‘, ‘sex‘ => 1);//array(1)
curl_setopt($ch, CURLOPT_URL, ‘http://localhost/mytest/curl/userinfo.php‘);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
?>

4、抓取一些有页面访问控制的页面

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://club-china");
curl_setopt($ch, CURLOPT_USERPWD, ‘[username]:[password]‘);//破解页面访问控制
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_REFERER, "http://club-china");
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch);
curl_close($ch);
?>

5、模拟登录

<?php
function checkLogin($user, $password){
    if (empty($user) || empty($password)){
        return false;
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_REFERER, "http://mail.sina.com.cn/index.html");
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, USERAGENT);
    curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);
    curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
    curl_setopt($ch, CURLOPT_URL, "http://mail.sina.com.cn/cgi-bin/login.cgi");
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "&logintype=uid&u=" . urlencode($user) . "&psw=" . $password);
    $contents = curl_exec($ch);
    curl_close($ch);
    if (!preg_match("/Location: (.*)\\/cgi\\/index\\.php\\?check_time=(.*)\n/", $contents, $matches)){
        return false;
    }else{
        return true;
    }
}
define("USERAGENT", $_SERVER[‘HTTP_USER_AGENT‘]);
define("COOKIEJAR", tempnam("c:\windwos\temp", "cookie"));
define("TIMEOUT", 500);
echo checkLogin("username", "password");
?>

6、文件上传

<?php
/**
 * @param string $target_url 上传目标地址
 * @param string $filename 上传文件路径
 * @param string $form_name 表单名称
 */
function curlUploadFile($target_url, $filename, $form_name) {
    $upload_file = new CURLFile($filename);
    $post_data = array(
        $form_name => $upload_file
    );

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $target_url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    $result = curl_exec($ch);
    curl_close($ch);
}

$target_url = ‘http://www.codean.net/notFound/test.php‘;
$filename = realpath("C:/Users/HelloWorld/Desktop/Images/1.jpg");
$form_name = ‘file‘;

// 接收端使用$_FILES接受
curlUploadFile($target_url, $filename, $form_name);
?>

7、文件流上传

/*
 * 第三种写法,使用PHP流发送
 * @param string $target_url 上传目标地址
 */
function curlUploadFile($target_url) {
    $fh = fopen(‘php://temp‘, ‘rw+‘);
    $string = ‘Hello World‘;
    fwrite($fh, $string);
    rewind($fh);

    $ch =  curl_init();
    curl_setopt($ch, CURLOPT_URL, $target_url);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
    curl_setopt($ch, CURLOPT_PUT, true);
    curl_setopt($ch, CURLOPT_INFILE, $fh);
    curl_setopt($ch, CURLOPT_INFILESIZE, strlen($string));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $result = curl_exec($ch);
    curl_close($ch);
}
$target_url = ‘http://www.codean.net/notFound/test.php‘;
curlUploadFile($target_url);

// 接收端取出流文件并保存
$putdata = fopen(‘php://input‘, ‘r‘);
$fp = fopen(‘test.txt‘, ‘w‘);
while ($data = fread($putdata, 1024)) {
    fwrite($fp, $data);
}
fclose($fp);
fclose($putdata);
时间: 2024-10-13 20:56:18

PHP中使用CURL(六)的相关文章

PHP中的CURL函数库

PHP中的CURL函数库(Client URL Library Function) curl_close — 关闭一个curl会话curl_copy_handle — 拷贝一个curl连接资源的所有内容和参数curl_errno — 返回一个包含当前会话错误信息的数字编号curl_error — 返回一个包含当前会话错误信息的字符串curl_exec — 执行一个curl会话curl_getinfo — 获取一个curl连接资源句柄的信息curl_init — 初始化一个curl会话curl_m

在PHP中使用CURL实现GET和POST请求的方法

1.CURL介绍CURL是一个利用URL语法规定来传输文件和数据的工具.支持很多协议,如HTTP.FTP.TELNET等.幸运的是PHP也支持CURL库.本文将介绍curl的一些高级特性,以及在PHP中如何运用它.2.基本结构在学习更为复杂的功能之前,先来看一下在PHP中建立CURL请求的基本步骤:(1)初始化 curl_init()(2)设置变量 curl_setopt() //最为重要,一切玄妙均在此.有一长串curl参数可供设置,它们能指定URL请求的各个细节.要一次性全部看完并理解可能比

Linux系统中的curl命令使用教程

这篇文章主要介绍了Linux系统中的curl命令使用教程,是Linux入门学习中的基础知识,需要的朋友可以参考下. 命令:curl在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具.语法:# curl [option] [url]常见参数:-A/--user-agent <string>              设置用户代理发送给服务器-b/--cookie

PHP中的CURL函数库(转载)

使用PHP的cURL库可以简单和有效地去抓网页.你只需要运行一个脚本,然后分析一下你所抓取的网 页,然后就可以以程序的方式得到你想要的数据了.无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内 容,cURL 是一个功能强大的PHP库. PHP中的CURL函数库(Client URL Library Function) curl_close — 关闭一个curl会话 curl_copy_handle — 拷贝一个curl连接资源的所有内容和参数 cu

php 中使用cURL发送get/post请求,上传图片,批处理

cURL是利用url语法规定传输文件和数据的工具.php中有curl拓展,一般用来实现网络抓取,模拟发送get   post请求,文件上传. 在php中建立curl的基本步骤如下: 1 初始化        2 设置选项,包括url        3  执行并获取结果   4 释放curl句柄. 在工作和学习中,我也是时常用的curl.由于在使用curl设置选项时,各种选项比较难以记忆,需要参考,故在此记录下常用的一些例子,以便后来参考. 实例一 : 抓取网页数据(以拉手网开放api为例,也是g

Error【0007】:zabbix中因为curl版本过低而无法发送邮件

1. 错误背景 在centos6.5上,源码部署zabbix最新版本zabbix-3.2.14.部署后之后,在配置邮件发送报警时出错 2. 错误提示 3. 原因分析 从网上检索的结果是说,系统中的curl版本过低,不支持smtp协议.如下图 4. 解决方案 此时需要更新curl 通过wget https://curl.haxx.se/download/curl-7.61.0.tar.gz下载最新版本的curl源码 解压配置编译安装 tar -zxvf curl-7.61.0.tar.gz -C

去哪开数字资产交易所?听源中瑞小六说

还记得18年8月份的那一大波令人瑟瑟发抖的那些政策消息么?,"大量区块链微信公众号被封""金色财经账号被封"."币世界等账号也被停止使用",这一拨拨利空消息至今还是令人记忆犹新呐!要是国内区块链方面的政策又一次收紧,咱们要不要去国外开疆辟土呢?源中瑞小六哥这就带你来了解一下国外数字货币相关的政策吧. 一.美国 美国的Coinbase是一家很牛逼的数字资产交易所,其在美国各州都已拿到牌照,业务遍及银行.资金托管.证券.数字资产交易等.Coinbas

区块链系统开发有哪些核心技术?源中瑞小六解读

当下最火热的互联网话题是什么,不用我说也知道,那就是区块链技术,不过不少朋友只是听说过区块链技术,对其并没有过多的深入理解,那么区块链技术有哪些?下面就由源中瑞小六为大家带来区块链核心技术的介绍,以作大家参考之用.区块链技术核心有哪些?区块链技术可以是一个公开的分类账(任何人都可以看到),也可以是一个受许可的网络(只有那些被授权的人可以看到),它解决了供应链的挑战,因为它是一个不可改变的记录,在网络参与者之间共享并实时更新.区块链技术----数据层:设计账本的数据结构核心技术1.区块 + 链:从

PHP中使用curl入门教程

curl和libcurl的区别简介 https://www.jb51.net/article/68750.htm curl官网 https://curl.haxx.se/ PHP中使用curl入门教程 https://www.jb51.net/article/68763.htm PHP中使用curl的步骤 在PHP中,可以使用curl完成各种各样的功能,如抓取网页,文件的上传/下载.模拟登录等.但是这些功能的实现都是基于四个步骤完成的,所以curl的使用并不复杂. 使用curl时,主要分为以下四

powershell中调用 curl 的正确方法

学习node.js高级编程一书时,需要用到curl 下载curl并添加到环境变量后,在ps(powershell)中调用curl并输入参数时,始终 提示不对 使用get-help 查询,结果如下: PS C:\Users\sx00x> Get-Help curl 名称 Invoke-WebRequest 语法 Invoke-WebRequest [-Uri] <uri> [<CommonParameters>] 别名 iwr wget curl 原来,curl为 ps 原生命