CodeGym /Kurslar /Python SELF AZ /Web-skreyping məhdudiyyətlərini aşmaq: user-agent, cookie...

Web-skreyping məhdudiyyətlərini aşmaq: user-agent, cookies tənzimlənməsi və bloklanmadan yayınma metodları

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

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ə:

Python

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:

Python

# 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-agent rotasiyası: Hər bir sorğuda user-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:

Python

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:

Python

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 headerscookies 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!

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION