您的位置:

PHP Curl Get详解

一、登录并获取Cookie

使用php curl get功能登录其它网站时,需要先获取登录后的Cookie,并在后续的请求中加入该Cookie,以保持会话。

下面给出一个示例,假设需要登录到某网站http://www.example.com,其用户名为user,密码为password:

$url = "http://www.example.com/login.php";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query(array('username' => 'user', 'password' => 'password')));
$login_result = curl_exec($curl);
curl_close($curl);

在上面的示例中,使用curl_setopt设置了CURLOPT_COOKIEJAR参数为cookie.txt,表示将获取到的Cookie保存在文件cookie.txt中。

在后续的请求中,只需要将获取到的Cookie加入到请求中即可:

$url = "http://www.example.com/secure_page.php";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt');
$page_content = curl_exec($curl);
curl_close($curl);

在上面的示例中,使用curl_setopt设置了CURLOPT_COOKIEFILE参数为cookie.txt,表示从文件cookie.txt中读取Cookie,并加入到该请求中。

二、设置超时时间

在使用php curl get功能时,为了避免请求超时,可以设置超时时间。

下面给出一个示例,设置超时时间为10秒:

$url = "http://www.example.com/index.php";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
$page_content = curl_exec($curl);
curl_close($curl);

在上面的示例中,使用curl_setopt设置了CURLOPT_TIMEOUT参数为10,表示设置10秒的超时时间。

三、设置代理服务器

在使用php curl get功能时,可以设置代理服务器,方便访问需要代理的网站。

下面给出一个示例,使用代理服务器进行访问:

$url = "http://www.example.com/index.php";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_PROXY, 'http://192.168.1.1:8080');
$page_content = curl_exec($curl);
curl_close($curl);

在上面的示例中,使用curl_setopt设置了CURLOPT_PROXY参数为代理服务器地址和端口号。

四、设置请求头

在使用php curl get功能时,可以设置请求头,模拟浏览器的请求方式。

下面给出一个示例:

$url = "http://www.example.com/index.php";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
));
$page_content = curl_exec($curl);
curl_close($curl);

在上面的示例中,使用curl_setopt设置了CURLOPT_HTTPHEADER参数为请求头信息,模拟了Chrome浏览器的请求方式。

五、加入SSL支持

在使用php curl get功能访问https协议的网站时,需要加入SSL支持。

下面给出一个示例:

$url = "https://www.example.com/login.php";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$login_result = curl_exec($curl);
curl_close($curl);

在上面的示例中,使用curl_setopt设置了CURLOPT_SSL_VERIFYPEER参数为false,表示不验证SSL证书。