Dalam pembangunan perangkak, pengendalian kuki selalunya merupakan bahagian yang penting. Sebagai mekanisme pengurusan keadaan dalam HTTP, kuki biasanya digunakan untuk merekodkan maklumat log masuk pengguna dan tingkah laku mereka adalah kunci untuk perangkak untuk mengendalikan pengesahan pengguna dan mengekalkan status log masuk.
Dalam pembangunan perangkak PHP, pengendalian kuki memerlukan penguasaan beberapa kemahiran dan memberi perhatian kepada beberapa perangkap. Di bawah ini kami terperinci cara mengendalikan kuki dalam PHP.
1. Cara mendapatkan Kuki
Apabila menulis perangkak menggunakan PHP, jika anda perlu log masuk ke tapak web dan kekal log masuk, anda biasanya perlu mendapatkan kuki selepas log masuk. Berikut ialah dua cara biasa untuk mendapatkan kuki.
1. Gunakan CURL untuk mendapatkan Cookie
CURL ialah perpustakaan sumber terbuka yang berkuasa dan pelbagai pakej untuk membina dan memproses URL. Gunakan CURL untuk menghantar permintaan HTTP dan mendapatkan respons.
Untuk menggunakan CURL untuk mendapatkan kuki dalam PHP, anda boleh melengkapkan langkah berikut:
(1) Mulakan objek CURL dan tetapkan parameter yang berkaitan:
<?php //初始化 CURL $curl = curl_init(); //设置 CURL 的一些参数 curl_setopt($curl, CURLOPT_URL, 'http://www.example.com/login.php'); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, 'username=your_username&password=your_password'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie.txt'); curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt'); //执行 CURL 请求并获取响应结果 $response = curl_exec($curl);
Dalam perkara di atas kod , kami menggunakan fungsi curl_init()
untuk memulakan objek CURL dan menggunakan fungsi curl_setopt()
untuk menetapkan parameter:
CURLOPT_URL
: tetapkan URL yang diminta; CURLOPT_POST
CURLOPT_POSTFIELDS
CURLOPT_RETURNTRANSFER
: Tetapkan fail untuk menyimpan kuki; CURLOPT_COOKIEJAR
: Tetapkan fail untuk membaca kuki. CURLOPT_COOKIEFILE
Antaranya, dan membaca kuki dalam permintaan seterusnya. CURLOPT_COOKIEJAR
CURLOPT_COOKIEFILE
(2) Parsing hasil respons dan dapatkan maklumat kuki: cookie.txt
<?php //解析响应结果,获取 cookie preg_match_all('/Set-Cookie: (.*);/iU', $response, $cookies); $cookieStr = implode(';', $cookies[1]);
padang.
<?php $url = 'http://www.example.com/login.php'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 1); $result = curl_exec($ch); curl_close($ch); preg_match_all('/Set-Cookie: (.*);/iU', $result, $cookies); $cookies = implode(';', $cookies[1]);
(2) Gunakan kuki ini untuk memulakan permintaan POST ke halaman log masuk untuk mendapatkan kuki log masuk sebenar. Set-Cookie
<?php $url = "http://www.example.com/login.php"; $data = "username=your_username&password=your_password"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_COOKIE, $cookies); $result = curl_exec($ch); curl_close($ch);
<?php $url = "http://www.example.com/index.php"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIE, $cookies); //将 Cookie 信息添加到请求头中 $result = curl_exec($ch); curl_close($ch);
Masalah tamat tempoh kuki
Isu storan kuki
Isu keselamatan kuki
Atas ialah kandungan terperinci Petua Crawler: Cara Mengendalikan Kuki dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!