1. Web-skreyping məhdudiyyətlərinə giriş
Bu gün olduqca maraqlı bir mövzunu müzakirə edəcəyik - web-skreyping məhdudiyyətlərindən necə yan keçmək olar. Skreypingə maraq göstərən hər bir proqramçı gec-tez web-saytların məhdudiyyətləri və bloklamalarla qarşılaşır. Gəlin öyrənək, biz yaxşı uşaqlar, saytların müdafiə sistemlərinin qurbanı olmadan necə məlumat toplamağa davam edə bilərik və serverlərin qəzəbini cəlb etmədən bunu necə edə bilərik.
Web-saytlara sorğular göndərərkən, əslində onların şəxsi məkanına daxil olur və onlar tərəfindən yaxşı qorunan məlumatları götürmək istəyirsiniz. Bəs niyə saytlar bizim işimizi çətinləşdirir? Səbəblər müxtəlif ola bilər: müəllif hüquqlarını qorumaq, serverlərin etibarlılığı və performansını təmin etmək, məlumatların icazəsiz istifadəsinin qarşısını almaq. Əgər saytın çoxlu resurslarını istifadə edirsinizsə və ya onun qaydalarını pozursunuzsa, sizi... banlaya bilərlər. Və heç kim banları sevmir, bəlkə də server administratorları istisna olmaqla.
2. user-agent-in tənzimlənməsi
user-agent nədir?
User-agent — bu, sizin brauzeriniz tərəfindən hər HTTP-sorğu ilə birlikdə göndərilən identifikasiya sətiridir. Bu, serverə hansı brauzer və əməliyyat sisteminin istifadə edildiyini göstərir. Və bilirsinizmi? Bu user-agent asanlıqla dəyişdirilə bilər ki, server sizin, məsələn, ən yeni iPhone-dan gəldiyinizi düşünsün - əslində isə Python-skriptindən istifadə etdiyiniz halda, hansı ki, kofe fasiləsində işə salmısınız.
user-agent-in dəyişdirilməsi nümunələri
requests kitabxanasında user-agent-i dəyişmək kifayət qədər asandır. Budur kiçik bir nümunə:
import requests
url = "https://example.com"
# user-agent-i Chrome brauzeri kimi tənzimləyək
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
}
response = requests.get(url, headers=headers)
print(response.content)
user-agent-i dəyişmək bir az panda kostyumunda korporativ parti-yə getmək kimidir. Elə sizsiniz, amma görünüşünüz fərqlidir. Serverlər "skritp" əvəzinə "brauzer" gördükdə sizi partiyə buraxa bilərlər.
3. Cookies ilə iş
Cookies nədir?
Cookies — bunlar veb-saytların sizin brauzerinizdə saxladığı kiçik məlumat parçalarıdır. Onlar saytin sazlamalarından tutmuş, login etdikdən sonra sistemdə qalmağa imkan verən sessiya identifikatorlarına qədər istənilən məlumatı daxil edə bilər.
Cookies-i sorğularda istifadə etmək
requests vasitəsilə cookies ilə işləmək də çətin deyil. Normalda siz sayta ilk sorğunu göndərdiyiniz zaman cookies əldə edirsiniz və sonra onları növbəti sorğularda istifadə edirsiniz:
# Cookies saxlamaq üçün sessiya yaradılır
session = requests.Session()
# İlk sorğunu yerinə yetiririk, cookies götürülür
session.get(url)
# Eyni cookies-i növbəti sorğularda istifadə edirik
response = session.get(url)
print(response.content)
Sessiyalar cookies üçün ictimai nəqliyyat kimidir. Onlar sizinlə saytdan-sayta səyahət edir, sazlamalarınızı saxlayır.
4. Bloklardan qaçma metodları
Bloka düşmə ehtimalını azaltmaq üçün praktik məsləhətlər
Budur bir neçə fənd:
- Sorğular arasında gecikmələr: sorğular arasında random gecikmələr əlavə edin ki, botunuz şübhə doğurmasın.
- IP ünvanlarının dəyişdirilməsi: IP ünvanlarını dəyişmək üçün VPN və ya proxy istifadə edin ki, sizi bu parametrlə bloklamasınlar.
user-agentrotasiyası: Hər bir sorğudauser-agent-ı dəyişdirin ki, fərqli brauzerlər kimi görsənəsiniz.
Gecikmələrin və IP dəyişmələrinin tətbiq nümunələri
Gecikmələr əlavə etmək üçün time kitabxanasından istifadə edin:
import time
import random
for _ in range(10):
response = session.get(url)
# Random gecikmə
time.sleep(random.uniform(1, 3))
requests-də IP ünvanını dəyişdirmək üçün proxy istifadə edə bilərsiniz:
proxies = {
"http": "http://10.10.10.10:8000",
"https": "https://10.10.10.10:8000",
}
response = requests.get(url, proxies=proxies)
5. Əlavə aldadıcı metodlar
Scriptlərin şübhəli görünməməsi üçün headers və cookies istifadəsindən yararlanaraq həqiqi istifadəçini təqlid edin. Yadda saxlayın: realizm — bloklardan yayınmaq üçün gizli silahınızdır.
Bu günkü dərsimiz bununla yekunlaşır. Bu texnikaları tətbiq etmək, sizi veb-saytların "radarında" "işıqlı" saxlamağa və lazımlı məlumatları bloklanmadan toplamağa kömək edəcək. Yadda saxlayın, hər superqəhrəman kimi sizin də məsuliyyətiniz var — bu texnikaları etik və qanun çərçivəsində istifadə edin. Öz gücünüzə inanın və qoy kodunuz, klaviatura üzərində rəqs edən pişik qədər zərif olsun!
GO TO FULL VERSION