Python ile Web Sitelerine Giriş Yapmak

Logging Into Websites With Python



Oturum açma özelliği, günümüzün web uygulamalarında önemli bir işlevdir. Bu özellik, sitenin kullanıcısı olmayanlardan özel içeriğin korunmasına yardımcı olur ve ayrıca premium kullanıcıları tanımlamak için de kullanılır. Bu nedenle, bir web sitesini web'de kazımayı düşünüyorsanız, içerik yalnızca kayıtlı kullanıcılar tarafından kullanılabiliyorsa, giriş özelliğiyle karşılaşabilirsiniz.

Web kazıma eğitimleri geçmişte ele alınmıştır, bu nedenle bu eğitim, tarayıcıyı kullanarak manuel olarak yapmak yerine kodla oturum açarak web sitelerine erişim sağlama yönünü kapsar.







Bu öğreticiyi anlamak ve web sitelerine giriş yapmak için komut dosyaları yazabilmek için biraz HTML bilgisine ihtiyacınız olacaktır. Belki harika web siteleri oluşturmak için yeterli değil, ancak temel bir web sayfasının yapısını anlamak için yeterli.



Bu, İstekler ve BeautifulSoup Python kitaplıkları ile yapılır. Bu Python kitaplıklarının yanı sıra, kod yazmadan önce ilk analiz için önemli olacağından Google Chrome veya Mozilla Firefox gibi iyi bir tarayıcıya ihtiyacınız olacaktır.



İstekler ve BeautifulSoup kitaplıkları, aşağıda görüldüğü gibi terminalden pip komutuyla kurulabilir:





pip yükleme istekleri
pip kurulumu BeautifulSoup4

Kurulumun başarısını doğrulamak için, yazarak yapılan Python'un etkileşimli kabuğunu etkinleştirin. piton terminalin içine.

Ardından her iki kitaplığı da içe aktarın:



içe aktarmakistekler
itibarenbs4içe aktarmakGüzelÇorba

Hata yoksa içe aktarma başarılıdır.

Süreç

Komut dosyaları içeren bir web sitesinde oturum açmak, HTML bilgisi ve web'in nasıl çalıştığı hakkında bir fikir gerektirir. Web'in nasıl çalıştığına kısaca bakalım.

Web siteleri, istemci tarafı ve sunucu tarafı olmak üzere iki ana bölümden oluşur. İstemci tarafı, bir web sitesinin kullanıcının etkileşimde bulunduğu kısmı iken, sunucu tarafı, web sitesinin iş mantığının ve veritabanına erişim gibi diğer sunucu işlemlerinin yürütüldüğü kısmıdır.

Bağlantısı aracılığıyla bir web sitesi açmayı denediğinizde, HTML dosyalarını ve CSS ve JavaScript gibi diğer statik dosyaları size getirmesi için sunucu tarafına bir istekte bulunuyorsunuz. Bu istek, GET isteği olarak bilinir. Ancak bir form doldururken, bir medya dosyası veya belge yüklerken, bir gönderi oluştururken ve diyelim ki bir gönder düğmesine tıkladığınızda, sunucu tarafına bilgi gönderiyorsunuz. Bu istek, POST isteği olarak bilinir.

Senaryomuzu yazarken bu iki kavramı anlamak önemli olacaktır.

Web sitesini incelemek

Bu makalenin kavramlarını uygulamak için, Kazımak için Alıntılar İnternet sitesi.

Web sitelerinde oturum açmak, kullanıcı adı ve şifre gibi bilgiler gerektirir.

Ancak bu web sitesi sadece bir kavram kanıtı olarak kullanıldığından, her şey yolunda gider. Bu nedenle kullanacağız yönetici kullanıcı adı olarak ve 12345 şifre olarak.

İlk olarak, web sayfasının yapısına genel bir bakış sunacağı için sayfa kaynağını görüntülemek önemlidir. Bu, web sayfasına sağ tıklayarak ve Sayfa kaynağını görüntüle seçeneğine tıklayarak yapılabilir. Ardından, giriş formunu incelersiniz. Bunu, oturum açma kutularından birine sağ tıklayıp öğeyi incelemek . Öğeyi incelerken, görmelisiniz giriş etiketler ve ardından bir ebeveyn biçim üzerinde bir yere etiketleyin. Bu, oturum açmaların temelde formlar olduğunu gösterir. İLETİ web sitesinin sunucu tarafında ed.

Şimdi, not edin isim Kullanıcı adı ve şifre kutuları için giriş etiketlerinin özniteliği, kod yazarken gerekli olacaktır. Bu web sitesi için, isim kullanıcı adı ve şifre için öznitelik Kullanıcı adı ve parola sırasıyla.

Ardından, giriş için önemli olabilecek başka parametreler olup olmadığını bilmeliyiz. Bunu hızlıca açıklayalım. Web sitelerinin güvenliğini artırmak için, Siteler Arası Sahtecilik saldırılarını önlemek için genellikle jetonlar oluşturulur.

Bu nedenle, bu belirteçler POST isteğine eklenmezse, oturum açma başarısız olur. Peki bu tür parametreleri nasıl biliyoruz?

Ağ sekmesini kullanmamız gerekecek. Bu sekmeyi Google Chrome veya Mozilla Firefox'ta almak için Geliştirici Araçları'nı açın ve Ağ sekmesine tıklayın.

Ağ sekmesine girdikten sonra mevcut sayfayı yenilemeyi deneyin ve isteklerin geldiğini fark edeceksiniz. Giriş yapmayı denediğimizde gönderilen POST isteklerine dikkat etmelisiniz.

Ağ sekmesi açıkken bundan sonra yapacağımız şey şudur. Giriş bilgilerini girin ve giriş yapmayı deneyin, göreceğiniz ilk istek POST isteği olmalıdır.

POST isteğine tıklayın ve form parametrelerini görüntüleyin. Web sitesinin bir csrf_token değeri olan parametre. Bu değer dinamik bir değerdir, bu nedenle bu değerleri şu şekilde yakalamamız gerekir: ELDE ETMEK kullanmadan önce talep İLETİ rica etmek.

Üzerinde çalışacağınız diğer web siteleri için, muhtemelen aşağıdakileri göremeyebilirsiniz: csrf_token ancak dinamik olarak oluşturulan başka belirteçler olabilir. Zamanla, oturum açma girişiminde bulunmada gerçekten önemli olan parametreleri bilmekte daha iyi olacaksınız.

kod

Giriş sayfasının sayfa içeriğine erişmek için öncelikle Requests ve BeautifulSoup kullanmamız gerekiyor.

itibarenistekleriçe aktarmakOturum, toplantı, celse
itibarenbs4içe aktarmakGüzelÇorbaolarakbs

ile birlikteOturum, toplantı, celse() olaraks:
alan =s.elde etmek('http://quotes.toscrape.com/login')
Yazdır(alan.içerik)

Bu, oturum açmadan önce ve Login anahtar sözcüğünü aradığınızda oturum açma sayfasının içeriğini yazdırır. Anahtar kelime, henüz giriş yapmadığımızı gösteren sayfa içeriğinde bulunur.

Daha sonra, arayacağız csrf_token Daha önce ağ sekmesini kullanırken parametrelerden biri olarak bulunan anahtar kelime. Anahtar kelime bir eşleşme gösteriyorsa giriş etiketi, ardından betiği BeautifulSoup kullanarak her çalıştırdığınızda değer çıkarılabilir.

itibarenistekleriçe aktarmakOturum, toplantı, celse
itibarenbs4içe aktarmakGüzelÇorbaolarakbs

ile birlikteOturum, toplantı, celse() olaraks:
alan =s.elde etmek('http://quotes.toscrape.com/login')
bs_content=bs(alan.içerik, 'html.parser')
jeton =bs_content.bulmak('giriş', {'isim':'csrf_token'})['değer']
login_data= {'Kullanıcı adı':'yönetici','parola':'12345', 'csrf_token':jeton}
s.İleti('http://quotes.toscrape.com/login',login_data)
ana sayfa=s.elde etmek('http://quotes.toscrape.com')
Yazdır(ana sayfa.içerik)

Bu, oturum açtıktan sonra ve Logout anahtar sözcüğünü ararsanız sayfanın içeriğini yazdırır. Anahtar kelime, başarılı bir şekilde giriş yapabildiğimizi gösteren sayfa içeriğinde bulunur.

Her bir kod satırına bir göz atalım.

itibarenistekleriçe aktarmakOturum, toplantı, celse
itibarenbs4içe aktarmakGüzelÇorbaolarakbs

Yukarıdaki kod satırları, bir takma ad kullanarak Session nesnesini request kitaplığından ve BeautifulSoup nesnesini bs4 kitaplığından içe aktarmak için kullanılır. bs .

ile birlikteOturum, toplantı, celse() olaraks:

İstekler oturumu, bir isteğin içeriğini korumayı düşündüğünüzde kullanılır, böylece o istek oturumunun tanımlama bilgileri ve tüm bilgileri saklanabilir.

bs_content=bs(alan.içerik, 'html.parser')
jeton =bs_content.bulmak('giriş', {'isim':'csrf_token'})['değer']

Buradaki kod, BeautifulSoup kitaplığını kullanır, böylece csrf_token web sayfasından çıkarılabilir ve ardından belirteç değişkenine atanabilir. BeautifulSoup kullanarak düğümlerden veri çıkarma hakkında bilgi edinebilirsiniz.

login_data= {'Kullanıcı adı':'yönetici','parola':'12345', 'csrf_token':jeton}
s.İleti('http://quotes.toscrape.com/login',login_data)

Buradaki kod, oturum açmak için kullanılacak parametrelerin bir sözlüğünü oluşturur. Sözlüklerin anahtarları, isim giriş etiketlerinin öznitelikleri ve değerler, değer giriş etiketlerinin özellikleri.

NS İleti Yöntem, parametrelerle bir gönderi isteği göndermek ve bize giriş yapmak için kullanılır.

ana sayfa=s.elde etmek('http://quotes.toscrape.com')
Yazdır(ana sayfa.içerik)

Bir oturum açtıktan sonra, yukarıdaki bu kod satırları, oturum açmanın başarılı olduğunu göstermek için sayfadan bilgileri çıkarmanız yeterlidir.

Çözüm

Python kullanarak web sitelerine giriş yapmak oldukça kolaydır, ancak web sitelerinin kurulumu aynı değildir, bu nedenle bazı sitelere giriş yapmak diğerlerinden daha zor olabilir. Sahip olduğunuz oturum açma zorluklarının üstesinden gelmek için yapılabilecek daha çok şey var.

Tüm bunlarda en önemli şey HTML, İstekler, BeautifulSoup bilgisi ve web tarayıcınızın Geliştirici araçlarının Ağ sekmesinden alınan bilgileri anlama yeteneğidir.