一、登录并获取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证书。