Skocz do zawartości

Zyber

Elita
  • Postów

    28
  • Dołączył

  • Ostatnia wizyta

Reputacja

51 Początkujący

Ostatnie wizyty

1 344 wyświetleń profilu
  1. Jak ty bedziesz przegladal strony innych to twoje beda wyswietlane innym. Te strony ktore maja najwiecej lajkow sa czesciej wyswietlane.
  2. Nie wiem jak to będzie w vb ale powinno być identycznie jak C#. Żeby sprawdzić czy strona została załadowana do końca korzysta się z darzenia geckoWebBrowser2.Load += new EventHandler<DomEventArgs>(geckoWebBrowser2_Load); gdzie geckoWebBrowser2 to nazwa jaka wpisałeś name okna kontrolki geckofx. To zdarzenie będzie wykonane ok. 4x może być mniej dlatego w ciele zdarzenia warto dodać zmienną która będzie inkrementowana np. do 3, potem piszesz warunek jeżeli zmienna którą wcześniej inkrementujesz ma wartość 3 to wykonuje się kod który ma się wykonać po załadowaniu strony, i tą zmienną potem musisz wyzerować. Z IE są problemy z których niema z gecko oraz gecko jest cały czas rozwijana szybciej niż IE co przekłada się na komfort pracy. Przy korzystaniu z request'ów należy podsłuchiwać przeglądarkę co "gada" do serwera i program który piszesz czy gada tak samo. Wiąże się to z analizowaniem pakietów, znajomością protokołów itd. jest to znacznie więcej niż ten poradnik który napisałem wyżej.
  3. Te strony które maja najwięcej laików są częściej wyświetlane. Program klika w przycisk "Stumble" otwierając strony z kategorii które wcześniej dodaliśmy, witryna sama decyduje jakie są wyświetlane. Program udając człowieka lajkuje je, każdemu jakaś strona się podoba, wszystkie albo żadna było by bardzo podejrzane.
  4. stumbleupon bot Program przegląda strony dodane do serwisu stumbleupon oraz lajkuje losowo wybrane strony. Na górnym panelu wyświetlane są statystyki: czas jaki będzie wyświetlać się strona, ile jeszcze będzie się wyświetlać, ilość przejrzanych stron, ilość za lajkowanych stron. Program można pobrać tutaj: mediafire.com/download/ygk3aev0kpdo72v/stumbleupon.rar
  5. Dziękuje wszystkim tym którzy głosowali na mój poradnik oraz gratuluje pozostałym zwycięzcom
  6. Jak pobudzi się trochę fantazję można uwiarogodnić swój program na 99% pod PPA
  7. Dzięki za link całkiem kusząca jest ta strona
  8. Dzisiaj pokaże wam jak zrobić program który będzie miał dowolny wygląd oraz jak zrobić wyświetlanie się nowego okna po kliknięciu w przycisk. Tworzymy nowy projekt VS klikamy w formatkę i zmieniamy kolor który będzie przezroczysty (ten który nie będzie się wyświetlał wokół obrazka który wcześniej zrobimy w programie graficznym alb screenshot) w Properties ->TransparencyKey np. zielony, żeby być pewnym jaki jest to odcień koloru użyjemy programu ColorPicker który możesz pobrać np. tutaj. Kolor pobieramy przez wciśnięcie F9, wciskając Esc zatwierdzamy kolor. Robimy obrazek w programie graficznym zapisujemy go (teraz może być dowolny format zapisu). Tworzymy nowy projekt w programie graficznym o większych wymiarach niż nasz rysunek którego przed chwilą zapisaliśmy. Nakładamy na niego kolor taki sam jak ustawiliśmy w VS TransparencyKey. Teraz już wiesz po co sprawdzaliśmy dokładny odcień koloru? Wklejamy obrazek który wcześniej przygotowaliśmy tan który będzie wyświetlany w naszym programie. Zapisujmy go w formacie png jeżeli będzie inny format to nie uzyskamy przezroczystości. Wyświetli nam się rysunek z ramką. Teraz przechodzimy do VS klikamy w formatkę w Properties-> backgroundimage ustawiamy nasz rysunek. Dopasowujemy rozmiar formy do naszego rysunku, jeszcze musimy zmienić FormBorderStyle na none po skompilowaniu projektu mamy własny wygląd programu. Teraz do niego musimy dodać pola tak aby można było wpisać np.: key, login, hasło itp. W miejsce w które będziemy wprowadzać albo wyświetlać tekst wstawiamy textbox’a, możemy go znaleźć w toolboxie. Warto zmienić mu właściwości na BorderStyle na none robimy to Properties-> BorderStyle. Zmiana tych opcji sprawi że zniknie nam ramka. Teraz musimy jeszcze zrobić klikanie, jak pewnie już zauważyłeś w czasie na jechania kursora na button on zmienia kolor. Do formatki dodajemy panel z toolboxa i rozciągamy go na cały obszar przycisku w właściwościach zmieniamy kolor na przezroczysty BackColor->Web-> transparent. Jeszcze musimy dodać picturebox w którym będziemy trzymać nasz „drugą wersję” przycisku. Dodajemy go tak jak poprzednio w backgroundimage w właściwościach picturebox. Teraz musimy dodać dwa zdarzenia MouseMove do formatki (tutaj w większości będziesz dodawać elementy visible na false, teraz mamy jeden element w swoich programach możesz mieć ich więcej) i do naszego panelu którego przed momentem dodaliśmy. Zdarzenia dodajemy tak jak na rysunku. Jak klikniemy dwa razy na wybrane zdarzenie to utworzy nam się automatycznie nazwa zdarzenia i przejdziemy do kodu. Nasz kod będzie bardzo prosty w zdarzeniu dla formatki ukryjemy naszą „drugą wersję” przycisku a w zdarzeniu panelu ustawimy na true czyli ją pokarzemy. „Drugą wersję” przycisku powinniśmy ukryć podczas ładowania formy przy odpaleniu programy, jeżeli tego nie zrobimy to przy odpaleniu programu będziemy widoczna „Drugą wersję” przycisku dopiero przy poruszeniu kursora myszki zmieni się na tą którą pożądamy. Zdarzenia umożliwiają obiektom na monitorowanie zmian zachodzących w innych obiektach. Zdarzenie MouseMove funkcjonuje podczas ruszaniem kursora myszki nad kontrolką w której takie zdarzenie utworzyliśmy. Teraz zapewne już wiesz jak działa nasz program jak przeciągniemy myszkę poza obszar panelu który pokrywa przycisk to widzimy oryginalny wygląd przycisku jak najedziemy na przycisk (obszar kontrolki Panel) to zmieni się on na „drugą wersję” przycisku. Na koniec pokażę CI jak otworzyć nowe okno po kliknięciu w przycisk. Przechodzimy do zakładki Solution Explorer prawym przyciskiem klikamy na nazwę naszego projektu i wybieramy kolejno Add->New Item… otworzy nam się okno z którego wybieramy Windows Form, teraz zmieniamy nazwę na dowolną, ja pozostawię taką samą czyli Form2 (będzie to miało znaczenie dale przy pisaniu kodu) i klikamy add. Teraz na naszą formę (Form2) możemy dodawać co chcemy możemy znowu wprowadzić nasz własny wygląd. Żeby przejść do kodu tej formy klikamy prawym klawiszem na nią i wybieramy View Code. Przechodzimy do kodu formy pierwszej tworzymy nowe zdarzenie dla kontrolki Panel1 MouseClick i dodajemy taki kod Nazwa nowe_okno jest nazwą dowolną możesz wpisać jaka chcesz nazwa Form2 jest nazwą jaka nadaliśmy przy dodawaniu Windows Forms jak ją zmienisz przy dodawaniu tutaj tez ją musisz zmienić. Wyswietlamy nową formę wywołujac metodę Show. Jeżeli będziesz robić keygena warto dodać dwa butony minimalizuj i zamknij. Robi się to w taki sposób że dodajemy buton z toolboxa w właściwościach jego kasujemy tekst żeby nie wyświetlał nam się button1 zmniejszamy go do wymiarów dopasowanych do wyglądu naszej formatki, umieszczamy w prawym górnym rogu (tak jest standardowo, możesz umieścić go w innym miejscu i zrobić coś co będzie cię wyróżniać od wszystkich). Teraz musimy dwukrotnie kliknąć na nasz przycisk i dodać kod. Żeby po kliknięciu w przycisk zamkną okno dodajemy taki kod: Żeby po kliknięciu w przycisk zminimalizował okno dodajemy taki kod W podobny sposób można zrobić maxymalizację okna, ale efekt nie jest taki jaki chcielibyśmy osiągnąć. Po zmaksymalizowaniu naszego okna zostanie ono powielone x razy . Czasami może się przydać przy otwieraniu wielu okien żeby one się nakładały na siebie, możemy to zmienić w właściwościach formy Properties->StartPosition -> Centerscreen. Czasami występuje taka konieczność żeby wprowadzony tekst przez użytkownika był zasłonięty (tak jak wpisujemy hasło na stronie www). Zmieniamy w Properties->UseSystemPasswordChar na true. Zamiast własnych obrazków możesz wykorzystać screenshot.
  9. Zapału ma sporo, gorzej z czasem. E-booka może kiedyś, bardziej wole mniejsze formy prezentacji informacji np. takie poradniki . Pokaże wam jak napisać program o dowolnym wyglądzie, utworzony z samych screenshot’ów pod PPA, ale jeszcze trochę musicie poczekać
  10. Jeszcze nic nie podpinałem pod CaptchaSnipera ani pod Captcha Breaker.
  11. Anyway tak z ciekawosci sprawdziłem poprawnosc no i postepujac zgodnie z twoimi wskazówkami otrzymamy to: Pobierz xulrunner z tego linka. Xulrunner pobierałem sporo czasu temu i nie sprawdziłem czy na tej wersji co podałem wcześniej działa. Teraz powinno być wszystko ok. Xulrunner dodałem też do projektu bubblews\bubblews\bin\Debug
  12. Można uzyskać obrazek po ID, uzyskując go po screenie nigdy nie dostałem zniekształconego (jeżeli o to pytasz), deatch by captcha większości je rozwiązuje . Tak można przez winhttp, WebBrowser(dołączony do VS) i kilka innych sposobów z wyświetlaniem strony albo bez jej wyświetlania. Różnica jest w tym z jakiego silnika przeglądarki korzysta i jak bardzo jest rozbudowana dana biblioteka. Gecko cały czas jest rozwijana i ulepszana. Masz broblem z rozumieniem kodu? To pytaj
  13. Poradnik Jak zacząć pisać boty w C#, z przykładem do bubblews. http://make-cash.pl/jak-zacz%C4%85%C4%87-pisa%C4%87-boty-w-c-z-przyk%C5%82adem-do-bubblews-t4827/#entry63275
  14. Łatwo będzie dlatego, że zmieni się tylko nazwy id i klas, które pobieramy ze strony www. Reszta będzie taka sama albo identyczna, nie wszędzie potrzebujemy wpisywać lokalizacji do rejestracji konta. Opisywać podstaw języków programowania mija się z celem, w sieci jest tego typu materiałów sporo.
  15. Do napisania programu, który będzie za nas wykonywał jakąś czynność w tym przypadku będzie zakładał konto oraz robił wpis będziemy potrzebować: Microsoft Visual C# 2010 express albo nowszą wersję, którą możemy pobrać tutaj Gecko21, jest to silnik przeglądarki firefox, możemy pobrać go tutaj Xulrunner jest pojedynczym pakietem instalacyjnym, który może być użyty do uruchamiania wielu aplikacji bazujących na XUL+XPCOM takich jak Firefox czy Thunderbird, możemy go pobrać tutaj Deathbycaptcha to właśnie ten serwis będzie rozwiązywał za nas captche. Biblioteki API możemy pobrać ze strony serwisu po zalogowaniu. Następnie musimy przekopiować Xulrunner na dysk systemowy do Program Files (może być inna lokalizacja, ale ta jest uniwersalna). Teraz zostało nam jeszcze dodanie gecko do naszego projektu. Tworzymy nowy projekt VS, otwieramy kolejno Solution Explorer->Referencje klikamy prawym klawiszem myszy na add reference przechodzimy do zakładki browse i dodajemy nasze biblioteki tj. Geckofx-Winformms.dll oraz Geckofx-Core.dll oraz DeathByCaptcha. Żeby było możliwe wyświetlanie stron internetowych musimy dodać do toolbox’a kontrolke. Klikamy na Toolbox->Choose Items-> .NET Framework Components -> Browse i dodajemy Geckofx-Winformms.dll. W toolbox powinna pojawić nam się nowa kontrolka GeckoWebBrowser i dodajemy ją do naszej formy. Teraz możemy przejść do pisania programu. Przechodzimy do kodu programu, dodajemy bibliotekę poprzez: using Gecko tj. na rysunku poniżej, warto jeszcze dodać bibliotekę wejścia/wyjścia będzie ona nam potrzebna do operacji na plikach (using System.IO;), Drawing.Imaging posłuży nam do zapisanie fragmentu strony internetowej do pliku graficznego a potem do strumienia którego wyślemy do deadbycaptha. Warto jeszcze sprawdzić ustawienia projektu czy mamy wybrane Framework 4, robimy to w ten sposób Projekt-> nazwa_projektu Properties… -> Application i w Target framework ustawiamy .NET Framework 4 jeżeli masz inny albo .NET Framework 4 Client Profile to go musisz zmienić (może być nowszy, ale nie starszy). Pod InitializelComponent(): dodajemy dwie linijki kodu. Pierwsza odczytuje Xulrunner, w nawiasach piszemy ścieżkę dostępu do katalogu Xulrunner. Druga linijka odpowiada za wyświetlenie w kontrolce strony głównej bubblews. Jak skompilujesz projekt to wyświetli ci się główna strona bubblews. Teraz nasz program musi kliknąć „Enter Site”, żeby móc przejść dalej. Jak to zrobić? Uruchamiamy naszą ulubioną przeglądarkę (moją jest Firefox i z niej będę korzystał przy dalszym opisie tego poradnika) wciskamy F12 albo włączamy „przełącz narzędzia” (Narzędzia -> dla twórców witryny -> przełącz narzędzia) i sprawdzamy co tam kryje się pod tym przyciskiem (rysunek poniżej). Widzimy że nasz przycisk należy do klasy entersite oraz ma odnośnik „/”. Tak naprawdę wczytuje on jeszcze raz stronę (ale jej nie odświeża). Możemy sobie darować klikanie w niego, możemy od razu przejść do podstrony w której będziemy wypełniać pola przy zakładaniu konta, poprzez wpisanie adresu „bubblews.com/account/create” (specjalnie nie dodałem www). Teraz dla zwiększenia czytelności naszego kodu stworzymy zmienną lokalną „document” typu GeckoDocument taj jak poniżej Teraz utworzymy zmienną Username typu GeckoHtmlElement i przypiszemy jej Id textbox’a ze strony dla username. Widzimy, że id które szukamy to „username”, kolejną rzeczą jak nas interesuje to atrybut value, to właśnie tam będziemy wpisywać naszą wartość tekstową. W ten sposób sczytujemy ID dla wszystkich pól w które będziemy wpisywać tekst. Tekst wysyłam korzystając z metody SetAttribute. W naszym przypadku będzie to wyglądało następująco. Username. SetAttribute(„value”, nazwa_jaką_chcemy przesłać). ( W trakcie testowania aplikacji okazało się że po wpisaniu danych w pole i klikniecie na submit serwer nie odczytywał wartości wpisywanych jest to spowodowane systemem który wychwytuje roboty, które chcą założyć konto dlatego napisałem metodę SetString o której opowiem ci później jak ona działa, ale jeżeli będziesz chciał napisać bota który będzie się logował na twoje konto i wystawiał komentarze np. na Facebook’u to ta metoda wpisywania wartości działa bez zarzutu.) Username bo taką nazwę wymyśliliśmy wcześniej przy tworzeniu zmiennej typu GeckoHtmlElement, SetAttribute przyjmuje dwa parametry pierwszy to nazwa atrybutu do którego będziemy zapisywać natomiast drugi to co będziemy zapisywać. Poniżej przedstawiam Ci jak to wygląda u mnie, nie przejmuj się że w tym momencie nie wszystko rozumiesz z poniższego zapisu w dalszej części wytłumaczę CI co tam się „dzieje”. Jeżeli będziesz pisać program który nie czyta danych z pliku to po value wpiszesz textbox1.Text jak się pewnie już domyślasz tekst który wpisałeś w textbox jest wpisany w jako drugi parametr metody SetAttribute, (SetAttribute(„value”, textbox1.Text)). Kolejnym elementem jaki widzimy na stronie bubblews przy zakładaniu konta są dwa check box do wyboru płci. Teraz mamy do czynienia z klikaniem. W tym przypadku robimy tak samo, sczytujemy id dla checkbox Male nosi nazwę „sex_male”, zamiast metody SetAttribute użyjemy Click. Click nie przyjmuje żadnych parametrów. Wygląda to tak: W kodzie widzimy, że klikanie w nasz checkbook jest wewnątrz pętli warunkowej if. Postanowiłem że dam użytkownikowi programu do wyboru ręcznego czy konto ma być założone na mężczyznę czy kobietę już niedługo sam się przekonasz że jest to element którego nie możemy powierzyć programowi żeby decydował za nas. Wyobraź sobie taką sytuację, do programu ładujesz plik w którym są męskie imiona a program wybiera losową wartość co do płci i zostaje założone konto dla John female. Sam przyznasz że jak administrator by takie coś zauważył to konto od razu jest usuwane bo wygląda nie naturalnie. Następnie jest ładowanie rysunku nasz program tego robić nie będzie, potem mamy wybór Layout oraz Header Color są to naj mniej istotne rzeczy przy tworzeniu konta i pozwolimy aby nasz program sam wybierał jedną z tych opcji. Żeby tak się stało napiszemy sobie funkcję RandomValue, która będzie przyjmować dwie wartości typu int pierwsza to liczba „od” druga to liczba „do” określająca nasz przedział liczbowy, i będzie zwracałam nam wynik typu int. Jak się potem przekonasz często będziemy używać liczb losowych i żeby nie pisać w kółko tego samego kodu, będziemy używać właśnie tej funkcji. Nasza funkcja wygląda tak jak poniżej. Tworzymy zmienną lokalną, w której będziemy przechowywać wynik, następnie tworzymy instancje klasy i do naszej zmiennej przypisujemy pseudolosową wartość. Wracając do pisania wybranej opcji przez nasz program posłużymy się pętlą switch, która wybierze jedną z opcji odpowiadającej numerowi który został „wylosowany” przez nasza funkcję RandomValue. Ja dopisałem jeszcze wyświetlenie na formatce jaką opcję wybrał nam program, która wyświetli się w komponencie label. Teraz zostało nam jeszcze potwierdzenie że zgadzamy się z regulaminem serwisu. Kliknięcie w zatwierdzenie regulaminu nie różni się niczym innym od tego co opisywałem wcześniej tak kliknięcie w Create jest inne bo nie ma określonego Id. Mamy do dyspozycji klasę submit oraz odnośnik href = „#” co za bardzo nam się nie przyda. Do tego elementu odniesiemy się po nazwie klasy. Tworzymy zmienną np.: su typu GeckoHtmlElement do pobrania klasy użyjemy metody GetElementsByClassName. Na końcu linii widzimy [0]. Nazwy klas mogą się po powtarzać dlatego musimy określić konkretnie o którą nam chodzi, w tym przypadku o pierwszą więc wpisujemy 0 (liczymy od 0 nie od 1). Teraz w konsoli błędów na dole programu VS widzimy że mamy błąd. Nie można przekonwertować Gecko.GeckoNode (metoda GetElementsByClassName należy do tej klasy) do Gecko.GeckoHtmlElement. Dla tego musimy zrobić rzutowanie poprzez dodanie w nawiasach okrągłych GeckoHtmlElement tak jak poniżej. Nasz program nie będzie klikał w Create, sami będziemy w niego klikać jest to niekomfortowe dla osoby korzystającej z takiego programu ale zawiera dużo elementów, które zawsze występują i będziesz mógł je „żywcem” przekopiować do swoich programów. Teraz przechodzimy do robienia wpisu na stronie, kopiujemy adres pod którym dodajemy wpis i wpisujemy go do programy, już pewnie wiesz jak będzie wyglądał nasz kod który będzie otwierał tą podstronę (pisałem o nim na samym początku). Jako formularz dodawania wpisu widzimy tytuł. Z tym nie ma żadnego problemu sczytujemy Id i postępujemy tak jak wyżej. Teraz mamy do wyboru temat wpisu. Jedynym sposobem który się sprawdził to wstrzyknięcie spreparowanego kodu do strony. Przesłany kod do serwera będzie wyglądał np. Układ zdjęcia oraz wczytywanie go pominiemy ten krok. Teraz umieścimy tekst który chcemy opublikować. Podglądam jak zrobiony jest element do którego wprowadzamy tekst, jest to wieloliniowe pole tekstowe. Niestety nie możemy do niego odnieś się po id. Do tego posłużymy się właściwością InnerHtml która ustawia lub pobiera zbiór zawartych w danym elemencie znaczników razem z ich treścią. W zmiennej content będziemy przechoywać id które jest w bloku div. Dlaczego tak? Sam to sprawdź J. Do formatki dodaj textbox z tolboxa w właściwościach zmień multiline na true i powiększ go tak żebyś mógł zmieścić kilka linijek kodu które tam prześlesz. W kodzie umieść taką linijkę textbox1.Text = content.InnerHtml. textbox to nazwa twojej kontrolki możesz ją zmienić na dowolną, text to właściwość tej kontrolki , przypisujemy jej zawartość jaką pobrał InnerHtml. Content to zmienna którą wcześniej utworzyliśmy. Przetestuj ten kod dla id które jest przy bloku div oraz dla id przy textarea. W ten sposób możesz sprawdzać co masz w innych zmiennych. InnerHtml przesyła dane w znacznikach ” ”, wartości w kodzie HTML też są podawane w ” ”, dlatego musisz je zmienić ‘ ’. Kompilator odczytuje tekst od ” do ”, jeżeli wstawisz taki kod "<label for="content">Content kompilator odczyta "<label for= " taki kawałek kodu resztę podkreśli ci na czerwono i zasygnalizuje ERROR i będzie miał rację. Żeby połączyć „stały” tekst z tekstem który chcesz przesłać (twój wpis) dodajesz znak + za ” np.: ”teks stały skopiowany ze strony internetowej ” + nasz_teks + ” reszta tekstu skopiowana ze strony”. Teraz pewnie zastanawiasz się w którym miejscu umieścić nasz teks. Możemy wpisać jakiś tekst ja wpisałem Ala ma kota i kliknąłem submit news na samym dole i sprawdziłem jeszcze raz tą część strony jak wygląda kod i widzimy gdzie mamy umieścić nasz kod. Teraz musimy rozwiązać captche, ja skorzystałem z API death by captcha. Do przesłania do serwera loginu i hasła posłużyłem się funkcją String, którą wcześniej napisałem ponieważ okazało się że metoda (ToString) konwertująca zawartość textboxa na tekst zwraca znacznie więcej niż potrzebujemy (zachęcam się do tego aby sprawdzić to co zwraca, pisałem ci wyżej jak to się robi). Opis tej funkcji przedstawię Ci później. Do rozwiązania captcha skorzystamy z sample ze strony producenta, kod znacznie zmienimy pod swoje potrzeby. Metoda Decode jest przciążona znaczy to że metoda o tej samej nazwie może przyjmować różne parametry np.: metoda dodaj może wyglądać tak: Private void dodaj (int a, int b ) Private void dodaj (float a, float b ) Private void dodaj (double a, double b ) teraz jak wywołasz ją to kompilator sam zdecyduje jakie są jej parametry i wybierze tą poprawną. My do Decode prześlemy Stream. Teraz musimy pozyskać captcha ze strony w tym celu zrobimy zdjęcie screenshot całej strony, potem ustawiamy offset tak żeby wskazywał na początek naszego captcha. Robimy to metoda prób i błędów, następnie robimy zdjęcie o danym rozmiarze. To jakie rozmiary ma captcha możemy sprawdzić na stronie a potem musimy jeszcze je zmniejszyć. Jak przetestujesz ten fragment kodu na pewno więcej CI się rozjaśni dlaczego tak, zostawiłem Ci w komentarzach zapis na dysk rysunku, oraz rozmiar rysunku. Najlepiej jak offsety ustawisz na 0 i wtedy testuj różne szerokości i wysokości. Mamy zdjęcie zapisane do bitmapy teraz musimy zapisać je do strumienia i przekazać do funkcji Decode. Po rozwiązaniu captcha zostanie nam zwrócony wynik zapisany w zmiennej typu string. Odwołanie się do adcopy_response (tak nazywa się miejsce w które mamy wpisać rozwiązane captcha) i przekazania wyniku przy użyciu metody SetAttribute jest nieefektowne dlatego musimy kolejny raz pobrać kod ze strony i go zmodyfikować. Każde captcha ma swoje api które musimy odczytać i dodać do kodu które będziemy przesyłać na stronę. Sposób w jaki to zrobiłem opiszę Ci później. Nie różni się to od innych operacji na tekście jakie wykorzystuje w tym programie a tak wygląda to w kodzie Teraz musimy kliknąć w subimit robimy to tak jak pisałem Ci powyżej tutaj też pobieramy nazwę klasy a nie ID. Teraz pokarze Ci jak zmieniać ip, port oraz userageent. Ip zmieniamy tak jak poniżej na rysunku, jeżeli będziesz chciał przetestować ip z poziomu kodu tzn. będziesz zmieniał go w kodzie nie z poziomu użytkownika to podajesz go w cudzysłowie np.: ”192.168.1.100”. Kolejną bardzo ważną rzeczą jest user agent jest to „wizytówka” przeglądarki. Właśnie po tym strona www którą odwiedzasz wie jaką masz przeglądarkę w jakim języku jest, jaki system operacyjny itp. Chyba widzisz teraz jak ważną rolę będzie odgrywał user agent na przy zakładaniu kont YT? Zmian dokonujemy tak jak poniżej na rysunku: Ostatnią rzeczą jaką chciałby Cię nauczyć to czyszczenie ciasteczek robi się to poniższą funkcją: Firefox ma opcje które możemy zmieniać po wpisaniu w pasek adresu about:config. W swoich programach możesz ustawić wszystkie parametry jakie tam widzisz robi się to tak: GeckoPreferences.User["nazwa_parametru_jaki_chcesz_zmienić"] = wartość W przedstawianym programie często kożystamy z List. Lity są to dynamiczne tablice. My będziemy w nich przechowywać pojedyncze znaki, oraz całe słowa. Boty powinny mieć ciągłą prace, użytkownik poświecą np.: 1godz przy konfigurowaniu programu, a on działa nam np. przez długi czas, żeby to było możliwe musimy „gdzieś” przechowywać dane takie jak: Login, hasło, user agent, ip itp. Wygodnym dla użytkownika są pliki tekstowe i właśnie nimi się teraz zajmiemy. Do wczytania pliku do naszego programu posłużymy się klasą File oraz metodą ReadAllLines. Żeby użytkownik mógł sobie wybrać lokalizację swojego pliku użyjemy pętli warunkowej if oFD_pass.ShowDialog() (oFD_pass jest to moja nazwa kontrolki jaką dodałem z toolbox’a. W toolboxie nazywa się openFileDialog) do wyświetlenia okna posłużymy się metodą showDialog jeżeli klasa DialogResult zwróci ok to wykona się kod w pętli if (DialogResult.OK ). W pętli wczytujmy plik i będziemy go przechowywać w tablicy typu string. Widzisz jeszcze wywołanie funkcji WriteList służy ona do przekopiowania nazw z tablicy np.: do listy. Robimy to tylko dla tego żeby móc w prosty sposób odwołać się do jednej wybranej nazwy a nie do wszystkich które wczytaliśmy. (Jeżeli chcemy w textboxa na stronie www wpisać jedno imię a nie cały plik.) Zapis (kopiowanie) do listy słów robimy w dwóch etapach. W pierwszym zapisujemy pojedyncze litery, jeżeli kolejny znak to „ ,” zapisz całą tablice do kolejnej tablicy potem musimy ją wyczyścić (każda nazwa w pliku na końcu musi mieć przecinek w przeciwnym razie nie zostanie wszytana, dlatego że warunek w którym jest sprawdzany znak czy jest przecinek czy inny nie zostanie spełniony a właśnie tam robimy kopiowanie pojedynczych znaków do tablicy jako jeden wyraz). Przed zapisem listy liter które tworzą słowo widzisz wywołanie funkcji RemoveAt. Służy ona do usuwania znaku na danej pozycji. Musimy usunąć przecinek który został dodany do tablicy a nie chcemy go. Żeby móc określić ostania pozycję w naszej liście posłużymy się metodą Count. Zwraca ona wielkość listy. Na jednej pozycji mamy zapisane jedną literę więc wielkość listy odpowiada ilości liter teraz musimy usunąć ostatni element. Robimy to przez dopisania -1, dlatego że tablice liczy się od 0 a nie od 1 czyli 4 element tablicy będzie na 3 pozycji. W ten sposób otrzymaliśmy listę z nazwami na poszczególnych pozycjach. Załóżmy że nasza lista nazywa się imiona, w pamięci programu ona wygląda tak imiona[0] będzie zapisany Kamil, imiona[1] będzie zapisany Jan itd. Teraz rozumiesz po co te całe „zamieszanie”? Tablica w której zapisaliśmy plik wyglądał tak user[0] Kamil, Jan, Kolejnym kodem który chciałbym ci przybliżyć jak dział to zapis danych do kontrolki ListView. Plik który tworzy użytkownik wygląda następująco proxy:port,kraj. Cała procedura zapisu do listy będzie wyglądała identyczne jak powyżej z tym że powyżej naszym znakiem po którym wpisywaliśmy do listy imię był przecinek teraz mamy dwa znaki „:” i „ ,”. Doszło nam również numer odczytywanej linii (trochę strasznie wygląda taki zapis nazwa_zmiennej[][], jest to dwuwymiarowa tablica). Żeby dodać dane do kontrolki ListView musimy stworzyć instancje klasy ListViewItem elementy dodany w tej samej linijce jest pierwszym elementem wyświetlanym w naszej kontrolce. Kolejne dodajemy przez dodanie właściwości subitems i metody add. Teraz dodajmy główne nazwy (Item) do naszej kontrolki. W tym celu przechodzimy do widoku naszej formy klikamy w kontrolkę wcześniej dodaną (ListView) po najechaniu na nią myszką w prawym górnym rogu pojawi się strzałka, po kliknięciu w nią rozwinie się nam menu i wybieramy edit columns, teraz możesz dodać kolumny, nazwę kolumn jak pewnie się już domyślasz zmieniamy w właściwościach. Do elementów ListView odwołujemy się tak: Nazwa_list_view.Item[numer].Subitems[pozycja] do wpisania wartości (np.: port albo ip) wykorzystujemy własnośc Text. Numer jest to numer elementu natomiast pozycja odpowiada numerowi kolumny, jeżeli chcesz zmieniać tylko IP to zmieniasz numer a pozycja zostaje taka sama Teraz przedstawię ci metodę SetString którą byłem zmuszony do pisać w czasie testowania aplikacji. Tak jak pisałem Ci w pierwszej części strona na której chcemy stworzyć konto „rojentuje się” że cos jest nie tak i po kliknięciu w submit wyskakują komunikat Możemy to ominąć symulując wysyłanie znaków z klawiatury (SendKeys.SendWait("nasznak/nazwa klawisza np. ENTER")), klejoną rzeczą jaką możesz poprawić w tej funkcji to czas wyświetlania się kolejnych znaków. Do zapisu jaki jest w tej metodzie już pewnie się przyzwyczaiłeś, powtarza się on zawsze tam gdzie chcemy odczytać poszczególne znaki w tekście, teraz robimy tak samo tylko nie sprawdzamy co to za znak w petli warunkowaj If tylko konwertujemy ją na string i przesyłamy do metody Key. Pewnie teraz zastanawiasz się czemu ją konwertujemy na string skoro typ zmiennej jaki przyjmuje to string. Sam to sprawdź (usuń ToString i zobacz jaki błąd Ci wyskoczy). Metoda Key przyjmuje pojedyncze znaki przekazujemy ją do pętli switch w środku rozpoznaje co to za litera, jeżeli jest to ta którą szukamy to wykonuje się symulowanie wciskania klawiatury przez użytkownika z opóźnieniem (wcześniej zachęcałem Cię do napisania opóźnienia, a też piszę że takie jest, otóż użytkownik wciska klawisze z różną częstotliwością raz to będzie 201ms a kolejny to 211ms, myślę że rozjaśniło Ci się dlaczego takie opóźnienie jest ważne i dlaczego wcześniej jak przesyłaliśmy na serwer dane w metodzie SetAttribute serwer nie uwzględniał tych danych.) Przy zakładaniu konta użytkownik może podać stronę internetową ale nie jest to konieczne dlatego warto dodać checkbox’a. Czy checkbox jest zaznaczony sprawdzamy w pętli warunkowej if i korzystamy z metody Checked i sprawdzamy czy jest na true czyli zaznaczony. Wewnątrz pętli widzisz taki zapis W nawiasach podajemy teks który zawsze się wyświetli, użytkownicy nie lubią wprowadzać http://www. Tylko podać własną stronę dlatego robimy to za nich. Na konie pokaże Ci jak automatycznie odczytać lokalizację pliku (naszego programu) w jakiej danej chwili się znajduje. Wyobraź sobie że piszesz aplikacje i chcesz ją sprzedać, taka aplikacja będzie korzystać z bibliotek, plików zewnętrznych np. tak jak nasza z Xulrunner’a oraz z bibliotek gecko. Tłumaczyć każdemu z osobna „żeby program prawidłowo Ci działał musisz przekopywać …. do …. bo jak tego nie zrobisz to … (strach pomyśleć co się będzie działo J)” prawdopodobnie i tak tego nie zrobi i będzie ze program przy uruchomieniu wyskakują dziwne błędy, albo dołączasz grafikę do programu i też musisz ją gdzieś trzymać. Z pomocą przychodzi nam klasa Application i właściwość StartupPath tu znajdzie się lokalizacja naszej aplikacji. Jeżeli umieścisz w folderze np. nasza_aplikacja a w tym folderze u tworzysz folder np. image w którym będziemy trzymać grafikę np. rys1.jpg wtedy ścieżka dostępu do tego pliku będzie wyglądać tak Application.StartupPath + @"\image" bez względu czy użytkownik życzy sobie trzymać program na dysku C czy D albo w jakimś innym miejscu, ważne żeby nasz program był w tym samym folderze jaki wskazaliśmy w lokalizacji w naszym przypadku to nasza_aplikacja. Podsumowując potrafisz zrobić: - sprawdzić id, klasę pod jaką jest napisany dany element na stronie internetowej - stworzyć zmienną klasy która będzie przechowywać id lub klasę - przesłać tekst na stronę internetową używając do tego metody SetAttribute oraz modyfikować kod w programie -klikać w wybrane elementy na stronie internetowej - zmieniać ip, port, user agent przeglądarki - zrobić screenshot strony internetowej oraz ustawić offsety i wymiar rysunku Teraz w prosty sposób możesz sam napisać program który będzie dodawał wpisy np.: na pastebian albo zrobić prostą przeglądarkę która będzie łączyć się z yt za każdym razem z innego user agent, raz serwer yt będzie „widział Cię” że łączysz się z macintosh, linux’a albo Ipad’a lub z innej wersji przeglądarki, tylko musisz wcześniej sprawdzić czy ten user agent jest obsługiwany przez daną stronę. - wczytywać plik z lokalizacji wybranej przez użytkownika - dokonywać operacji na plikach tj. kopiowanie wybranej nazwy do lisy - umieszczać wybrane nazwy w ListView - symulować wciskanie klawiszy z klawiatury - automatycznie odczytywać ścieżkę dostępu do pliku Tutaj możesz pobrać cały projekt. Tutaj możesz pobrać api Death By Captcha Wszelkie prawa zastrzeżone Żaden fragment publikacji (zawartość taka jak: tekst, grafika, pliki z danymi, oraz wszelkie inne dane) prezentowany w Forum http://make-cash.pl, nie może być powielany lub rozpowszechniany w żadnej formie i w żaden sposób bez uprzedniego zezwolenia. Wszelkie znaki graficzne, pliki z danymi i inne dane są chronione prawem autorskim i należą do autora postu.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Ta strona korzysta z ciasteczek aby świadczyć usługi na najwyższym poziomie. Dalsze korzystanie z witryny oznacza zgodę na ich wykorzystanie. Polityka prywatności .