Rumah > Artikel > pembangunan bahagian belakang > Petua Crawler: Cara Mengendalikan Kuki dalam PHP
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]);Dalam kod di atas, kami menggunakan ungkapan biasa untuk menghuraikan hasil respons yang dikembalikan oleh pelayan dan mendapatkan maklumat kuki. 2. Gunakan kaedah GET untuk mendapatkan KukiSesetengah tapak web tidak menyimpan kuki secara setempat selepas log masuk, tetapi mengembalikannya terus kepada pengguna. Pada masa ini kita boleh menggunakan kaedah GET untuk mendapatkan kuki. Menggunakan kaedah GET dalam PHP untuk mendapatkan Kuki, anda boleh melengkapkan langkah berikut: (1) Mulakan permintaan GET ke halaman log masuk dan dapatkan nilai Kuki yang dikembalikan oleh
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);2. Cara menggunakan kukiDalam pembangunan perangkak, selepas mendapatkan kuki, ia biasanya perlu digunakan dalam permintaan seterusnya untuk mengekalkan status log masuk. Untuk menggunakan Kuki dalam PHP, anda perlu menambah medan Kuki dalam permintaan HTTP, seperti yang ditunjukkan di bawah:
<?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);Perlu diambil perhatian bahawa setiap permintaan perlu membawa Kuki yang betul, jika tidak pelayan akan dianggap sebagai tidak log masuk. Kuki boleh disimpan secara tempatan dan dibaca semasa penggunaan berikutnya, atau kuki boleh disimpan dan dimuatkan secara automatik. 3. Masalah dan penyelesaian biasa kuki Dalam pembangunan perangkak, anda mungkin menghadapi beberapa masalah biasa semasa memproses kuki Berikut ialah beberapa masalah dan penyelesaian biasa untuk anda.
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!