Rumah > Artikel > pembangunan bahagian belakang > Gunakan PHP untuk mensimulasikan log masuk dan merangkak tapak web yang memerlukan log masuk untuk diakses.
Dengan perkembangan Internet, semakin banyak tapak web memerlukan log masuk untuk mengakses data mereka. Ini menjadi cabaran bagi sesetengah pengaturcara atau penyelidik yang perlu menggunakan data ini. Artikel ini akan memperkenalkan cara menggunakan PHP untuk mensimulasikan log masuk dan merangkak tapak web yang memerlukan log masuk untuk diakses.
Apakah log masuk simulasi?
Mensimulasikan log masuk bermakna tidak menggunakan pelayar untuk log masuk secara manual, tetapi mensimulasikan operasi log masuk melalui kod untuk mendapatkan data selepas log masuk. Ini boleh menjimatkan banyak masa dan usaha dalam situasi di mana akses log masuk yang kerap diperlukan.
Langkah-langkah untuk mensimulasikan log masuk menggunakan PHP
Sebelum mula mensimulasikan log masuk menggunakan PHP, kita perlu memahami beberapa konsep dan langkah asas.
Pertama, kita perlu mendapatkan alamat URL halaman log masuk. Kami boleh menggunakan alat pembangun penyemak imbas untuk melihat atribut tindakan dan kaedah borang log masuk Atribut ini memberitahu kami destinasi dan kaedah penyerahan borang. Kami juga boleh mengakses halaman log masuk terus dalam penyemak imbas, dan kemudian mendapatkan maklumat yang berkaitan tentang borang log masuk dengan melihat kod sumber halaman.
Seterusnya, kita perlu menganalisis setiap medan dalam borang log masuk. Dengan melihat atribut nama elemen borang, kita boleh menentukan data yang perlu diserahkan dalam borang. Untuk log masuk dengan jayanya, kami perlu mengenal pasti dengan jelas medan yang perlu diserahkan dan nilai sepadannya.
Sebelum menyerahkan borang log masuk, kami perlu membuat permintaan HTTP. Kita boleh menggunakan fungsi curl PHP untuk mensimulasikan pelayar menghantar permintaan HTTP, dan pada masa yang sama menghantar data borang log masuk ke pelayan sebagai parameter POST. Di sini, kita perlu memberi perhatian kepada beberapa maklumat pengepala permintaan khas, seperti Ejen Pengguna dan Perujuk.
Akhir sekali, kami perlu mengesahkan sama ada log masuk berjaya. Anda boleh menentukan sama ada log masuk berjaya dengan menyemak kod respons HTTP. Secara amnya, jika log masuk berjaya, pelayan akan mengembalikan kod status 302 dan mengubah hala ke halaman yang ingin kami akses. Jika log masuk gagal, pelayan akan mengembalikan kod status 401 (Tidak Dibenarkan) atau 403 (Dilarang).
Operasi khusus
Dengan pemahaman konsep asas di atas, kita boleh memulakan operasi sebenar.
Kami mengambil tapak web Zhihu sebagai contoh Pertama, kami perlu mendapatkan URL halaman log masuk.
$url = 'https://www.zhihu.com/signin';
Seterusnya, kita perlu menganalisis borang log masuk Zhihu. Anda boleh melihat atribut nama elemen borang melalui alat pembangun penyemak imbas.
<input type="text" name="username" /> <input type="password" name="password" /> <input type="hidden" name="_xsrf" value="xxxxxx" />
Dengan melihat kod di atas, kita boleh tahu bahawa medan yang perlu dihantar dalam borang log masuk termasuk nama pengguna dan kata laluan, serta rentetan rawak _xsrf. Rentetan rawak ini ditambah untuk mengelakkan serangan CSRF.
Dengan maklumat di atas, kami boleh membina permintaan HTTP untuk mensimulasikan operasi log masuk.
$url = 'https://www.zhihu.com/login/phone_num'; $data = array( 'phone_num' => 'your_phone_number', 'password' => 'your_password', '_xsrf' => 'xxxxxx' ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36', 'Referer: https://www.zhihu.com/signin' )); $response = curl_exec($ch); curl_close($ch); echo $response;
Dalam kod di atas, kami menggunakan fungsi curl untuk membina permintaan POST, termasuk data yang akan diserahkan, meminta maklumat pengepala dan maklumat kuki. Antaranya, COOKIEJAR dan COOKIEFILE digunakan untuk menyimpan maklumat kuki kami untuk kegunaan kemudian apabila mengakses halaman yang memerlukan log masuk. Untuk penyamaran pengepala permintaan HTTP, anda boleh menemuinya dalam alat pembangun.
Jika log masuk berjaya, pelayan harus mengubah hala kami ke halaman utama atau halaman lain yang memerlukan log masuk untuk mengakses. Kita boleh menentukan sama ada log masuk berjaya atau tidak dengan melihat kod respons HTTP.
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if($http_code == 302) { echo '登录成功!'; } else { echo '登录失败!'; }
Ringkasan
Artikel ini memperkenalkan cara menggunakan PHP untuk mensimulasikan log masuk dan merangkak tapak web yang memerlukan log masuk untuk mengakses. Perlu diingatkan bahawa terdapat beberapa risiko dalam log masuk simulasi, seperti kebocoran privasi, IP yang disekat, dsb. Oleh itu, apabila menggunakannya, kami perlu memahami sepenuhnya strategi perangkak tapak web sasaran, mematuhi undang-undang dan peraturan yang berkaitan serta melindungi privasi dan hak kami sendiri.
Atas ialah kandungan terperinci Gunakan PHP untuk mensimulasikan log masuk dan merangkak tapak web yang memerlukan log masuk untuk diakses.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!