Skocz do zawartości

Sprawdzanie pozycji a Captcha


si_ice

Rekomendowane odpowiedzi

Witam serdecznie na forum.

Napisałem skrypt sprawdzający do 250 fraz na 10 Data Center. Problem w tym, że gdy wykonam za dużo zapytań zamiast wyników otrzymuję Captche.

Napisałem funkcję pobierającą z formularza ID oraz stworzyłem AJAXowego inputa z wysyłką captchy oraz ID do skryptu, ktory miałby wysłać po GETem te dane; pod postacią linka:

$link = 'https://google.com/sorry/Captcha?hl=pl&continue='.$continue.'&id='.$id.'&captcha='.$captcha.'&submit='.$submit;

Starałem się różnymi funkcjami, ale ciągle jako odpowiedź dostaję kolejną Captche.

Czy mógłby ktoś podpowiedzieć?

Dzięki.

Odnośnik do komentarza
Udostępnij na innych stronach

Większość to rozwiązuje na 2 sposoby:

- ustawienie sleep(rand(15,30)) pomiędzy zapytaniami

- j/w + proxy

Co do Twojego sposobu: przejrzyj dokładnie form który otrzymujesz od G, nigdy się w to nie bawiłem więc mogę jedynie przypuszczać że są dodatkowe inputy.

Rozwiązanie tokena z tego co pamiętam jest zapisywane w ciastku - włącz zapisywanie ciastek jak nie masz.

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

Rozwiązanie tokena z tego co pamiętam jest zapisywane w ciastku - włącz zapisywanie ciastek jak nie masz.

Dzięki za szybką odpowiedź.

W formularzu jest ukryty adres do powrotu (name="continue") oraz ID, nic więcej nie ma. Zresztą wszystkie zmienne pakuję do parametrów.

Nie chciałbym bawić się z proxy, ale faktycznie spotkałem się z rozwiązaniem opartym na ciastkach, tylko problem w tym, że nie wiem gdzie to ugryźć.

Czy mógłbyś podpowiedzieć jak włączyć te cookie dla skryptu?

Odnośnik do komentarza
Udostępnij na innych stronach

Czego używasz do pobierania danych? Jeżeli file_get_contents() to zamień na curl.

Masz gotowy zamiennik dla fgc:

function get($adres,$post=false)
{
$ch = curl_init($adres);
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch,CURLOPT_COOKIEJAR,dirname(__FILE__).'/cookie.txt');
curl_setopt($ch,CURLOPT_COOKIEFILE,dirname(__FILE__).'/cookie.txt');
if($post){
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
}
$ct=curl_exec($ch);
curl_close($ch);
return $ct;
}

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki za pomoc.

Niestety, niewiedzieć temu w przypadku cURLa w ogólę nie dostaję Captchy tylko informacje, że coś próbuję im tam namieszać. Nic też nie zapisuje się w pliku cookie (ma CHMOD 777).

Będę jeszcze walczył z rańca, jakby miał ktoś jakieś rady, byłbym wdzięczny.

Odnośnik do komentarza
Udostępnij na innych stronach

Hej,

staram się tak zrobić, by w parametrach przeszły te same dane, które wysyłane są z formularza. Wiem jednak, że problem może jeszcze tkwić w zmiennych serwera i tu może być piesek pogrzebany

przykładowy link:

https://www.google.com/sorry/Captcha?continue=mojadomena.pl&id=&captcha=clici&submit=Prze%C5%9Blij

Odnośnik do komentarza
Udostępnij na innych stronach

https://www.google.com/sorry/image?id=1183732443730026584&hl=pl

tkwić w zmiennych serwera

Obrazek normalnie się wyświetla i ustawia ciasteczko. Masz gdzieś błąd w skrypcie.

Sprawa wydaje się prosta:

1)pobrać i wyświetlić obrazek

2)wysłać odpowiedź

3)utrzymywać cały czas sesję w ciastku

Wszystkie zapytania oczywiście poprzez curl.

Więcej nie pomagam, bo musiałbym napisać gotowca :P

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

Rozumiem rozumiem, gotowca też nie chcę :)

Mam tak: wysietla się albo wynik z numerem pozycji albo obrazek z moim inputem. Po przepisaniu Ajaxior bierze się za getPageData($url) gdzie jako url podaję link, przedstawiony wyżej.

Moje pytanie brzmi, czy w tym momencie, gdy serwer google odpowie, serwer z moim plikiem powinien odebrać ciacho i podtrzymywać je do momentu zakończenia korzystania ze skryptu?

Dobrze rozumuję?

Tylko pytanie, dlaczego nie zapisuje się ciacho :(

Odnośnik do komentarza
Udostępnij na innych stronach

Bo musisz obrazek pobrać przez cURL - tak aby Google skojarzyło sesje z cURL z konkretnym obrazkiem do przepisania. Sam obrazek wyświetlasz nie bezpośrednio z Google - bo wtedy się Twoja sesja z nim skojarzy, a nie ta z serwera. Przesyłanie obrazka musisz dorobić przez skrypt do odpytywania.

Odnośnik do komentarza
Udostępnij na innych stronach

O kurcze,

faktycznie idea jest mądra, bo przecież jak odświeży się obrazek przy tym samym ID to dostajemy innego jpg. Chyba to przekracza mój obecny zasób wiedzowy hehe. WebReklama, a w jaki sposób mogę pobrać konkretnie ten obrazek na mój serwer?

Z góry dzięki.

Odnośnik do komentarza
Udostępnij na innych stronach

pobrałem na serwer obrazek, wyświetlam go użytkownikowi (i faktycznie wyświetla się ten, który powinien);

pod obrazkem daje inputa, który ma dla zdarzenia enter wykonać funkcję onkeyup="mojEnter(event, $id_obrazka)"

funkcja pobiera wpisaną captche do inputa oraz id obrazka i przekazuje do pliku go.php, ktory wysyła żądanie do Google.

Niestety, nadal nie działa.

Czy kwestię pobierania obrazka oraz wysyłania zapytania można rozbić na dwa osobne cUrl? Czy muszę wypełniać formularz, czy mogę po prostu przesłać zmienne w parametrach?

Pozdrawiam niedzielnie

Odnośnik do komentarza
Udostępnij na innych stronach

Obrazek = token ma na celu "uwierzytelnienie użytkownika", więc wszystkie żądania HTTP jakie wykonujesz musisz realizować w ramach jednej sesji klient - serwer.

Innymi słowy każde żądanie HTTP jakie wykonujesz do google musi akceptować i wysyłać cookie z tego samego pliku.

Do tego dochodzi obsługa "dcaptcherów", czyli serwisów które odczytują token i zwracają wynik... Sądząc po tym, że nie możesz obsłużyć tokena porywasz się z motyką na słońce. W takim wypadku skorzystanie z proxy jest prostszym rozwiązaniem ... choć i tak nie wiadomo czy sobie poradzisz jeśli proxy zwróci kod 302, a nie spodziewany kod SERP ;)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności