![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 47 Pomógł: 2 Dołączył: 22.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Chcę wysłać formularz lecz posiada on ukryty token który po odświeżeniu strony się zmienia a trzeba go też wysłać ![]() Tak wygląda token (przykład):
po odświeżeniu strony zmienia się wartość 'name', value jest stały bo to hash i mam funkcję która by pobrała ten token, tylko jak go pobrać i wysłać bez przeładowania strony?
mam coś takiego, z tym że strona się przeładowuje i token się zmienia ;| i nie wiem jak to obejść
a przed tym mam jeszcze logowanie na stronie
funkcja cURL
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 38 Dołączył: 1.12.2010 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Ale po co Ci przeładowywanie strony? Popatrz:
1. Przegladarka pobiera strone w tym dane z tokenem 2. Wpisujesz w przegladarce dane 3. Wysyłasz na zadany w action url wszyskie dane wraz z aktualnym tokenem Gdzie tutaj potrzeba przeładowywania? -------------------- Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 47 Pomógł: 2 Dołączył: 22.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
aha. no comments
-------- w skrócie, skrypt ma: 1. wejść na stronę formularza 2. pobrać token 2. wysłać formularz wraz z tokenem // token za każdym odświeżeniem strony się zmienia prosił bym o wypowiedzenie się kogoś doświadczonego Ten post edytował magu112 19.12.2010, 16:55:46 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 38 Dołączył: 1.12.2010 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Kolego, buduje boty od najmniej 5 lat, więc pozwolisz, że zignoruje Twój komentarz o doświadczeniu.
W twoim 2 (3?) punktowym opisie nawet sam podajesz informację, że nie pobierasz tokenu dwa razy. Mówiąc jak najbardziej łopatologicznie: 1. Dostajesz formularz od urzędnika z sygnaturą 2. Wypełniasz go swoim imieniem i nazwiskiem 3. Oddajesz mu formularz Ponowie pytanie, gdzie tutaj podwójne proszenie urzędnika o formularz z sygnaturą - innymi słowy, gdzie potrzeba pobierania formularza dwa razy? Z tego co widzę, nie masz pojęcia o działaniu formularzy stąd prawdopodobnie bierze się Twój problem. Otóż nasze przeglądarki nie pobierają formularzy więcej niż dwa razy bo wtedy nie miało by to większego sensu. Przy wysyłaniu danych z formularza wszystko pakuje się w jeden łańcuch danych i wysyła metodą odpowiednio GET lub POST do adresu zadanego w tagu form. Tam też ląduje token o którym wspominasz - nie ma zatem żadnej potrzeby pobierania tokena wielokrotnie. -------------------- Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 728 Pomógł: 76 Dołączył: 12.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
A nie możesz po prostu:
1. wczytać CURL-em strony bez przesyłania żadnych danych 2. pobrać ukryte i zmieniające się dane wyrażeniem regularnym 3. wczytać stronę CURL-em jeszcze raz i przesłać wszystkie kompletne dane -------------------- gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet. Zarabianie bez wysiłku na domenach bez ruchu: prolink. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 47 Pomógł: 2 Dołączył: 22.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cytat A nie możesz po prostu: 1. wczytać CURL-em strony bez przesyłania żadnych danych 2. pobrać ukryte i zmieniające się dane wyrażeniem regularnym 3. wczytać stronę CURL-em jeszcze raz i przesłać wszystkie kompletne dane właśnie o to chodzi że token jest już wtedy inny żeby pobrać tokena muszę pobrać stronę łącząc się zalogowany przez curla, a żeby wysłać formularz z tokenem znów trzeba utworzyć nowe połączenie curl a wtedy token jest już inny
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
aha. no comments -------- w skrócie, skrypt ma: 1. wejść na stronę formularza 2. pobrać token 2. wysłać formularz wraz z tokenem // token za każdym odświeżeniem strony się zmienia prosił bym o wypowiedzenie się kogoś doświadczonego Jedyna co mi przychodzi na myśl to AJAX Ten post edytował Rid 19.12.2010, 20:52:13 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 38 Dołączył: 1.12.2010 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat żeby pobrać tokena muszę pobrać stronę łącząc się zalogowany przez curla, a żeby wysłać formularz z tokenem znów trzeba utworzyć nowe połączenie curl a wtedy token jest już inny Pytam się po raz trzeci. Po co pobierasz jeszcze raz formularz zamiast go wysłać? Innymi słowy, po co pobierasz formularz dwa razy? Przecież to jest zupełnie bezsensowne. Pomyśl jak robi to przeglądarka, pobiera dane wyświetla ci je, uzupełniasz i potem wysyłasz już przygotowany formularz... Nie wiem czemu uczepiłeś się tego podwójnego pobierania, a ja już nie wiem jak Ci to wytłumaczyć, że to nie jest problem z formularzem, ale z logiką tego zadania. Cytat Jedyna co mi przychodzi na myśl to AJAX Nie wiem po co w tym wszystkim miałby być AJAX, do wypełnienia formularza po stronie przeglądarki? To zaraz Ci autor tematu napisze, że AJAX będzie chciał pobierać formularz dwa razy... Jestem po raz kolejny zdruzgotany w tym tygodniu wiedzą teoretyczną i zadawaniem pytań o problemy, których nie ma. W razie co jestem dostępny na GG, mogę nawet pokazać jak zbudować takie wywołanie curla, tylko proszę nie mówcie mi, że nie da się obsłużyć tokena przez php, bo ta forma zabezpieczenie służy do anulowania używania funkcji "wstecz" w przeglądarce, a nie zabezpiecza przed botami. Ten post edytował Quadina 19.12.2010, 21:02:26 -------------------- Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Za pomocą Ajaxa ,może przesłać formularz bez przeładowania strony ,o to pytał autor strony.Metodą prób i błędów może coś wyjdzie.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 38 Dołączył: 1.12.2010 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
No swojej strony nie przeładujesz, ale załadujesz dwa razy AJAXem stronę zewnątrzną. Więc gdzie zysk?
Póki co autor musi się zastanowić co chce uzyskać, a nie co potrafi zrobić. -------------------- Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 47 Pomógł: 2 Dołączył: 22.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
hmmm może prościej będzie na przykładzie captcha
bo captcha też za każdym razem jest inne (zmienia się z odświeżeniem strony) a więc jak pobrać go do skryptu a potem wpisać/wysłać bez przeładowania strony, gdyż aby pobrać kod trzeba wywołać i zakończyć polecenie curl, a żeby go wpisać i wysłać znów trzeba nawiązać połączenie curl co wiąże się z ponownym wczytaniem strony co wiąże się z innym kodem... wykonując taką czynność się nie da: - rozpoczynam polecenie curl - wchodzę na stronę - wywołuję polecenie / zakańczam - pobieram kod - rozpoczynam polecenie curl - wysyłam kod - wywołuję polecenie / zakańczam curl - kod jest zły / kod się zmienił |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 728 Pomógł: 76 Dołączył: 12.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
A powinno być tak:
wykonując taką czynność się nie da: - rozpoczynam polecenie curl - jeśli potrzeba (są jakieś dane POST dynamicznie zmieniające się za każdym przeładowaniem) to pobieram te dane wyrażeniem regularnym z wyniku na poprzednim curl tutaj też obrabiam kod dla captacha czyli wyliczam pixelki i takie tam inne banalnie proste rzeczy ![]() - wykonuje jeszcze raz curl przesyłając wszystkie potrzebne dane Gdzie tu widzisz problem ? Tak jak mówiłem potrzebujesz najprawdopodobniej dwa razy wykonać CURL. Jak pisałem programy oparte o logowanie i automaty do postowania to czasami CURL trzeba było wykonać 3 razy. 1. Raz do zalogowania (autoryzacja) 2. Dwa do wczytania strony obsługującej pisanie posta (tu skanowałem wyniki wyrażeniem + obróbka danych) 3. Trzy przesłanie tych parametrów do strony odbierającej wyniki. -------------------- gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet. Zarabianie bez wysiłku na domenach bez ruchu: prolink. |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Magu:: skąd ten bulwers? Quadina dobrze prawi a ty go mięsem obrzucasz...
Łopatologicznie: - wysyłasz żądanie na stronę np. http://www.gra.pl/formularz.php - w ten sposób pobierasz token - następnie wysyłasz dane na adres logowania np. http://www.gra.pl/loguj.php wraz z pobranymi wcześniej danymi Innymi słowy nie wysyłaj danych do formularza tylko do pliku, który dane z formularza obrabia w tym wypadku loguj.php ps. do jakiego pliku/ścieżki masz wysłać dane znajdziesz w polu action="" formularza |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 38 Dołączył: 1.12.2010 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
@CuteOne Chwała Ci, Chwala, niech będzie chwała ;-)
Już myślałem, że na forum wszyscy wierzą, że żeby wysłać cokolwiek przez formularz to trzeba go najpierw 3 razy pobrać, potem upewnić się, że został pobrany (ewentualnie pobrać 4 razy) i potem go pobrać uzupełniając dane, żeby pobrać go jeszcze raz ![]() -------------------- Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 9.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
w skrócie, skrypt ma: 1. wejść na stronę formularza 2. pobrać token 2. wysłać formularz wraz z tokenem // token za każdym odświeżeniem strony się zmienia Moje pytanie, po co chcesz przechować token? A jeżeli chcesz to np: baza(najbezpieczniej), sesja, cookie nawet plik na upartego. Ten post edytował mmdo 23.12.2010, 08:38:30 |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Jemu chyba chodziło o pobranie tokena jako zmiennej, żeby potem mieć co wysyłać
![]() Ten post edytował CuteOne 23.12.2010, 18:13:21 |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 47 Pomógł: 2 Dołączył: 22.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Już w ogóle nie kapuje działania tego curla ^^ siedzę dumam piszę ni działa ;]
za to napisałem na szybko tester i wrzuciłem go na demo stronę to testowania http://rebox.ugu.pl/ <-- rebox.ugu.pl login login hasło haslo --> jeżeli komuś uda się wysłać tamten formularz za pomocą curla i poda przykład jak to zrobił, będę bardzo wdzięczny ;] |
|
|
![]()
Post
#18
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Przecież chłopaki mają racje jak byk! Pobierasz CURLem stronę, parsujesz ją pod kątem inputów z type="hidden" (DOM, simpleXML lub wyrażenia regularne) bo są takie 2. Pobierasz zarówno name jak i value i "przepychasz je" w CURLu dalej. Niepotrzebne jest wcale podwójne pobieranie strony. Tak jak piszą chłopaki:
1) pobierasz stronę rebox.ugu.pl/?action=frogo&i=wyslij 2) parsujesz to co dostajesz z CURLa by wyszukać inputy z polami typu hidden 3) ustawiasz w CURL dane POST na te znalezione przy parsowaniu 4) wysyłasz formularz na rebox.ugu.pl/?action=frogo&i=wyslij 5) cieszysz się ![]() Jeśli nadal nie rozumiesz, że to chłopaki mają racje to niestety ciężko widzę twoją przyszłość w programowaniu... -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 5.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich i kłaniam się, gdyż jestem tu nowy,
A teraz do meritum. Przeczytałem temat kilka razy i niestety mam podobny problem co kolega. Mam formularz z ukrytym hashem, ktory to (dziad jeden) zmienia sie za kazdym przeladowaniem/pobraniem strony (hidden input). CURL'a dopiero liznalem, wiec z gory dzieki za pomoc zaawansowanych w temacie. Tak wyglada formularz: Login mam, haslo tez. Jesli pobieram strone CURLem, obrabiam ja i pobieram sobie token, ale... jak znowu wydam polecenie
to token sie juz zmienia i ten pobrany jest do kitu. Jeszcze raz - z gory dzieki za pomoc. Siedze, googluje, rwe wlosy z glowy i juz trace nadzieje, ze to logowanie z automatu jest mozliwe. |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
Oszczędze Wam przechwałek, ile lat tworze boty
![]() Intryguje mnie, ze korzystacie z innych narzędzi, niż reszta świata... Zamiast tego zamulonego CURL'a z API rodem z lat 90tych, używam PEAR:HTTP_Request. zamiast wydłubywać inputy preg_matchem, używam PHP:DOM. Radze zaczerpnąć z moich rad, opłaca się. Pozdro600 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 6.05.2025 - 10:29 |