`
zccst
  • 浏览: 3322806 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PHP使用cURL代理

阅读更多
使用PHP 的cURL 庫可以簡單和有效地去抓網頁。你只需要運行一個腳本,然後分析一下你所抓取的網頁,然後就可以以程序的方式得到你想要的數據了。無論是你想從從一個鏈接上取部分數據,或是取一個XML 文件並把其導入數據庫,那怕就是簡單的獲取網頁內容,cURL 是一個功能強大的PHP 庫。本文主要講述如果使用這個PHP 庫。

啟用 cURL 設置

首先,我們得先要確定我們的PHP 是否開啟了這個庫,你可以通過使用php_info() 函數來得到這一信息。
Php代碼

    ﹤?php 
    phpinfo(); 
    ?﹥ 

如果你可以在網頁上看到下面的輸出,那麽表示cURL 庫已被開啟。

如果你看到的話,那麽你需要設置你的PHP 並開啟這個庫。如果你是在Windows 平臺下,那麽非常簡單,你需要改一改你的php.ini 文件的設置,找到php_curl.dll ,並取消前面的分號註釋就行了。如下所示:
Php代碼

    //取消下在的註釋 
    extension=php_curl.dll 



如果你是在Linux 下面,那麽,你需要重新編譯你的PHP 了,編輯時,你需要打開編譯參數—— 在configure 命令上加上“–with-curl” 參數。

一個小示例

如果一切就緒,下面是一個小例程:
Php代碼

    ﹤?php 
    // 初始化一個 cURL 對象 
    $curl = curl_init();  
    // 設置你需要抓取的URL 
    curl_setopt($curl, CURLOPT_URL, 'http://cocre.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); 





如何POST 數據

上面是抓取網頁的代碼,下面則是向某個網頁POST 數據。假設我們有一個處理表單的網址http://www.example.com/sendSMS.php ,其可以接受兩個表單域,一個是電話號碼,一個是短信內容。
Php代碼

    ﹤?php 
    $phoneNumber = '13912345678'; 
    $message = 'This message was generated by curl and php'; 
    $curlPost = 'pNUMBER='  . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send'; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php'); 
    curl_setopt($ch, CURLOPT_HEADER, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); 
    $data = curl_exec(); 
    curl_close($ch); 
    ?﹥ 



從上面的程序我們可以看到,使用CURLOPT_POST 設置HTTP 協議的POST 方法,而不是GET 方法,然後以CURLOPT_POSTFIELDS 設置POST 的數據。

關於代理服務器

下面是一個如何使用代理服務器的示例。請註意其中高亮的代碼,代碼很簡單,我就不用多說了。
Php代碼

    ﹤?php  
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, 'http://www.example.com'); 
    curl_setopt($ch, CURLOPT_HEADER, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); 
    curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080'); 
    curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password'); 
    $data = curl_exec(); 
    curl_close($ch); 
    ?﹥ 





關於SSL 和Cookie

關於SSL 也就是HTTPS 協議,你只需要把CURLOPT_URL 連接中的http:// 變成https:// 就可以了。當然,還有一個參數叫CURLOPT_SSL_VERIFYHOST 可以設置為驗證站點。

關於Cookie ,你需要了解下面三個參數:

CURLOPT_COOKIE ,在當面的會話中設置一個cookie

CURLOPT_COOKIEJAR ,當會話結束的時候保存一個Cookie

CURLOPT_COOKIEFILE ,Cookie 的文件。

HTTP 服務器認證

最後,我們來看一看HTTP 服務器認證的情況。
Php代碼

    ﹤?php  
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, 'http://www.example.com'); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
    curl_setopt(CURLOPT_USERPWD, '[username]:[password]') 
    $data = curl_exec(); 
    curl_close($ch); 
    ?﹥


总结,cURL关于http可以做三件事:
1,直接抓取某个地址的网页。
2,向某个地址post数据。
3,经过代理访问某个网页。也可以post。
其他,还有https和cookie。


關於其它更多的內容,請參看相關的cURL 手冊。
分享到:
评论

相关推荐

    php使用curl代理实现抓取数据的方法

    本文实例讲述了php使用curl代理实现抓取数据的方法。分享给大家供大家参考,具体如下: <?php define ( 'IS_PROXY', true ); //是否启用代理 function async_get_url($url_array, $wait_usec = 0) { if (!is_...

    php扩展 php_curl

    3. **高级功能**:`php_curl`支持多种HTTP方法(GET、POST、PUT等),可以设置HTTP头,进行POST数据提交,处理cookies,使用代理服务器,以及进行SSL连接。还可以通过设置选项实现自动重定向、超时控制、错误处理等...

    php5.3php_curl

    6. **代理支持**:如果需要通过代理服务器访问资源,cURL也可以轻松配置。 7. **自定义头信息**:可以添加自定义的HTTP头信息,如User-Agent、Cookie等。 8. **文件上传与下载**:通过cURL,可以实现文件的上传和...

    php_curl_使用实例

    ### PHP cURL 使用实例详解 #### 一、cURL简介 cURL 是一款强大的命令行工具,用于通过URL从或向服务器传输数据。cURL 支持多种协议,包括 FTP、FTPS、HTTP、HTTPS、SCP、SFTP、TFTP、TELNET、DICT、FILE 和 LDAP ...

    php下curl用法详解

    在PHP中,cURL库是一个强大的工具,用于执行HTTP和其他协议的请求,它允许开发者模拟浏览器行为,如发送POST请求、处理cookies、设置代理等。本文将深入解析PHP下的cURL用法,以便更好地理解和应用。 1. **初始化...

    PHP_Curl使用详解.doc

    **PHP_Curl 使用详解** PHP_Curl 是 PHP 中的一个扩展,用于执行 HTTP、FTP、SMTP 等多种协议的网络请求。它通过 cURL 库实现了丰富的功能,包括支持 SSL 证书、POST 数据、PUT 操作、FTP 上传、代理设置、HTTP ...

    php curl nginx 499 错误

    然而,当我们在使用cURL与服务器交互时,可能会遇到一些异常情况,比如"nginx 499错误"。这个错误通常发生在Nginx服务器上,表示客户端已经关闭了连接,但服务器端还没有完成响应。下面我们将详细探讨这个问题及其...

    PHPcurl模拟IP浏览器请求

    PHPcurl模拟IP浏览器请求是通过PHP的cURL扩展来实现的,它允许开发者发送HTTP请求,并自定义各种请求头,包括伪装成不同的浏览器以及设置源IP地址。下面将详细介绍这一技术及其相关知识点。 首先,我们要了解cURL是...

    php的curl整合类.zip

    在PHP中,cURL库通过`curl_init()`、`curl_setopt()`、`curl_exec()`和`curl_close()`等函数来使用。开发者需要逐个设置选项,然后执行请求,最后关闭连接。这虽然灵活,但可能会让代码变得复杂,尤其是对于频繁...

    php采用curl访问域名返回405 method not allowed提示的解决方法

    在PHP开发过程中,使用curl库来执行HTTP请求是一项常用的技术,尤其是当需要处理复杂的网络交互时。本文将详细介绍在使用curl访问特定域名时遇到405 Method Not Allowed错误的解决方法。首先,我们先来理解什么是405...

    php实现的Curl封装类

    本文将详细介绍如何利用PHP实现一个Curl封装类,以及其使用方法。 首先,Curl封装类的基本结构通常包含初始化Curl句柄、设置请求选项、执行请求和处理响应等功能。下面是一个简单的Curl封装类的代码示例: ```php ...

    PHP通过CURL下载文件

    - **CURL其他常用设置**:除了上述示例中的设置外,还可以通过`curl_setopt()`设置更多选项,如设置超时时间、代理服务器等。 - **文件流处理**:对于较大的文件,可以考虑将下载的内容直接写入到磁盘上,而不是保存...

    php中curl.exe运行文件

    本文将详细介绍`curl`在PHP中的应用,以及如何使用提供的`curl.exe`在CMD命令行环境下运行。 首先,`curl.exe`是一个可执行文件,它是libcurl库的一部分,可以在命令行环境中直接调用。在PHP中,通常我们使用`curl`...

    PHP封装CURL扩展类.zip

    1. `__construct()`:构造函数,可能用于初始化CURL会话,并设置默认的配置选项,如超时时间、用户代理等。 2. `setopt()`:设置CURL会话的选项,可以传递CURL常量,如`CURLOPT_URL`、`CURLOPT_RETURNTRANSFER`等,...

    PHP - cURL实现短信验证码注册登录完整示例:PHP - cURL.php和附件说明

    总的来说,这个示例提供了一个使用PHP和cURL实现短信验证码验证的完整流程,这对于构建安全的用户注册和登录系统至关重要。开发者可以通过学习这个示例来提升他们的技能,更好地理解和应用网络请求技术。

    PHP CURL 模拟提交(支持代理)

    PHP CURL 模拟提交(支持代理),一个封装好的功能能类,直接调用就好了

    php的curl多线程采集.zip

    因此,在实际应用中,需要适当控制并发数量,考虑使用代理IP池,以及合理地释放和重用cURL句柄以优化性能。 在标签"类库下载-php的curl多线程采集"中,我们可以理解为可能包含了实现这一功能的相关类库或脚本。在...

    PHP CURL详解

    **PHP CURL详解** PHP的CURL库是一种强大的工具,用于在服务器端执行...通过以上讲解,你已经了解了PHP中CURL的基本使用方法和常见应用场景。结合提供的文档资源,你可以深入学习更多细节,提升你的网络请求处理能力。

    php使用curl通过代理获取数据的实现方法

    本文实例讲述了php使用curl通过代理获取数据的实现方法。分享给大家供大家参考,具体如下: $curl=curl_init(); curl_setopt($curl, CURLOPT_URL, "http://www.baidu.com/"); curl_setopt($curl, CURLOPT_USERAGENT...

    curl手册 用curl的

    《PHP cURL 使用详解》 PHP cURL 是一个强大的库,用于在 PHP 中发送网络请求,包括抓取网页内容、模拟HTTP操作等。它使得开发者能够以编程方式获取和交互远程资源,无论这些资源是静态HTML、XML文件,还是动态API...

Global site tag (gtag.js) - Google Analytics