{"id":4646,"date":"2020-06-15T08:37:23","date_gmt":"2020-06-15T06:37:23","guid":{"rendered":"http:\/\/xn--okazwoka-bpb.pl\/?p=4646"},"modified":"2020-06-15T08:37:23","modified_gmt":"2020-06-15T06:37:23","slug":"skrypt-do-monitorowania-pozycji-w-google-z-2captcha-bez-proxy","status":"publish","type":"post","link":"http:\/\/xn--okazwoka-bpb.pl\/index.php\/2020\/06\/15\/skrypt-do-monitorowania-pozycji-w-google-z-2captcha-bez-proxy\/","title":{"rendered":"Skrypt do monitorowania pozycji w Google z 2captcha bez proxy!"},"content":{"rendered":"<p>Monitorowanie pozycji w Google\u00a0bez proxy jest mo\u017cliwe. W zasadzie mo\u017cna monitorowa\u0107 bez proxy nawet tysi\u0105ce fraz dziennie. Stworzymy w\u0142a\u015bnie taki bezp\u0142atny skrypt do monitorowania pozycji w Google w j\u0119zyku php. Aby by\u0142o to mo\u017cliwe musimy dodatkowo skorzysta\u0107 z us\u0142ug serwisu 2captcha.com.\u00a0<!--more--><\/p>\n<p>&nbsp;<\/p>\n<h2>Sprawdzanie pozycji strony w Google na konkretn\u0105 fraz\u0119 \/ s\u0142owo kluczowe<\/h2>\n<p><img class=\"aligncenter\" src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/6b328fc90518346885308f017281be7a.png\" \/>Monitoring pozycji w Google mo\u017cna zamkn\u0105\u0107 w kilku linijkach kodu php, bez u\u017cywania jakichkolwiek dodatkowych bibliotek:<\/p>\n<div class=\"codecolorer-container php solarized-light\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/><\/div><\/td><td><div class=\"php codecolorer\"><span class=\"re0\">$fraza<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">'blog seo'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"re0\">$strona<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">'xn--okazwoka-bpb.pl'<\/span><span class=\"sy0\">;<\/span> <span class=\"co1\">\/\/czyli okazw\u0142oka.pl<\/span><br \/>\n<br \/>\n<span class=\"re0\">$content<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw3\">file_get_contents<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;https:\/\/www.google.pl\/search?num=100&amp;start=0&amp;hl=pl&amp;q=&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"kw3\">trim<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw3\">urlencode<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fraza<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;&amp;gws_rd=cr,ssl&amp;ie=UTF-8&amp;oe=UTF-8&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw3\">preg_match_all<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'|&lt;a href=&quot;\/url\\?q=(.+?)&amp;amp|is'<\/span><span class=\"sy0\">,<\/span><span class=\"re0\">$content<\/span><span class=\"sy0\">,<\/span><span class=\"re0\">$pozycje<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$i<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">foreach<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$pozycje<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#93;<\/span> <span class=\"kw1\">as<\/span> <span class=\"re0\">$p<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw3\">stristr<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$p<\/span><span class=\"sy0\">,<\/span><span class=\"re0\">$strona<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span> <span class=\"kw1\">echo<\/span> <span class=\"re0\">$pozycja<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;Strona <span class=\"es4\">{$strona}<\/span> na fraz\u0119 <span class=\"es4\">{$fraza}<\/span> ma pozycj\u0119 <span class=\"es4\">{$i}<\/span>&quot;<\/span><span class=\"sy0\">;<\/span> <span class=\"kw1\">break<\/span><span class=\"sy0\">;<\/span> <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"re0\">$i<\/span><span class=\"sy0\">++;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span><span class=\"re0\">$pozycja<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span> <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'Poza 100'<\/span><span class=\"sy0\">;<\/span><span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Zmienna $content wy\u015bwietli tak\u0105 tre\u015b\u0107:<\/p>\n<p><img src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/7ed0f13594ecb9a314fb12af754acd97.png\" \/><\/p>\n<p>Wystarczy teraz\u00a0 zliczy\u0107 na kt\u00f3rej pozycji (w przyk\u0142adzie za pomoc\u0105 wyra\u017ce\u0144 regularnych) poka\u017ce si\u0119 poszukiwania domena i mamy wszystko gotowe:<\/p>\n<p><img src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/1b0df5546f550caad1bbb89aa915ef56.png\" \/><\/p>\n<p>Proste, sprawdzanie pozycji strony na s\u0142owo kluczowe jest banalne. I to koniec? Mo\u017cna by tak rzec, jednak spr\u00f3buj sobie tym skryptem sprawdzi\u0107 kilkadziesi\u0105t fraz. Szybko zorientujesz si\u0119 (maksymalnie po oko\u0142o 30 zapytaniach do wyszukiwarki), \u017ce co\u015b si\u0119 popsu\u0142o:<\/p>\n<h2><img src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/ec59f990f842310d67651c2ad52e59bc.png\" \/><\/h2>\n<p>Oznacza to, \u017ce wyszukiwarka Google zwyczajnie zbuntowa\u0142a si\u0119. Zwraca kod http 429, co oznacza, \u017ce z Twojej maszyny wysz\u0142o za du\u017co zapyta\u0144 do wyszukiwarki. W praktyce wyszukiwarka Google zaserwowa\u0142a zabezpieczenie, gdyby przej\u015b\u0107 po przekierowaniach b\u0119dzie to taki wynik:<\/p>\n<h2><img src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/580e6a50a6970646619b92d6e25b725d.png\" \/><\/h2>\n<p><img class=\"alignleft\" src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/a6344b19c13ffbd3597c4f97c9fc7369.png\" \/>To zabezpieczenie Recaptcha v2. Wyszukiwarka Google ka\u017cdego dnia musi w jaki\u015b spos\u00f3b walczy\u0107 z automatycznym odpytywaniem, s\u0105 takich pewnie grube miliony na dzie\u0144, a mo\u017ce nawet i na godzin\u0119. St\u0105d ka\u017cdy program do monitorowania pozycji w Google musi jako\u015b omija\u0107 na\u0142o\u017cone limity. Jakby tego by\u0142o ma\u0142o, co jaki\u015b czas zabezpieczenia ulegaj\u0105 zmianie. Nawet niewielka mo\u017ce &#8222;po\u0142o\u017cy\u0107&#8221; monitoring i sprawi\u0107, \u017ce\u00a0skrypt do sprawdzania pozycji w Google trzeba modyfikowa\u0107.<\/p>\n<p>Jak sprawdzi\u0107 pozycj\u0119 w Google w przypadku zablokowania IP? Mo\u017cna poczeka\u0107 kilka-kilkana\u015bcie godzin i zapytania zostan\u0105 (albo nie) odblokowane. Ale mo\u017cna rozwi\u0105za\u0107 zabezpieczenie i sprawdza\u0107 pozycje dalej, bez czekania. Nie b\u0119dziemy jednak implementowa\u0107 r\u0119cznego rozwi\u0105zywania Captcha. Przerzucimy t\u0105 \u017cmudn\u0105 robot\u0119 na kogo\u015b innego&#8230;<\/p>\n<h2>Jak omin\u0105\u0107\u00a0limity na odpytywanie wyszukiwarki Google?<\/h2>\n<p>W sumie limit\u00f3w tych nie da si\u0119 omin\u0105\u0107, ale skrypt mo\u017ce uda\u0107 cz\u0142owieka, kt\u00f3ry przejdzie przez zabezpieczenia. I w\u0142a\u015bnie w tym celu zadanie rozwi\u0105zywania zabezpieczenia Recaptcha przerzucamy na serwis 2captcha.com. Po poprawnym rozwi\u0105zaniu zabezpiecze\u0144 przez serwis b\u0119dzie mo\u017cna kontynuowa\u0107 wysy\u0142anie zapyta\u0144 do wyszukiwarki Google, mierzenie pozycji znowu b\u0119dzie odblokowane!<\/p>\n<p><img class=\"aligncenter\" src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/0a15fcc0b7a89127004dde91bc2102a9.png\" \/><\/p>\n<h2>Ile kosztuje automatyczne rozwi\u0105zywanie zabezpiecze\u0144 z 2captcha.com?<\/h2>\n<p>Za ka\u017cde 1000 rozwi\u0105za\u0144 Recaptcha v2 zap\u0142acisz 3 dolary (USD), czyli oko\u0142o 12 z\u0142otych. Wyszukiwarka blokuje IP \u015brednio raz na 20-30 zapyta\u0144. W prostym przeliczeniu mo\u017cesz tym sposobem odpyta\u0107 wyszukiwark\u0119 20-30 tysi\u0119cy razy &#8211; za 12 z\u0142otych. Mo\u017cna wi\u0119c sprawdza\u0107 nawet tysi\u0105c fraz ka\u017cdego dnia przez ca\u0142y miesi\u0105c.<\/p>\n<p><img class=\"aligncenter\" src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/697d898679e3657b97dbbb3892c0de11.png\" \/><\/p>\n<h2>Jak za\u0142o\u017cy\u0107 konto i jak za\u0142adowa\u0107 \u015brodki w 2captcha.com?<\/h2>\n<p>Dla u\u0142atwienia 2captcha.com ma przygotowan\u0105 polsk\u0105 wersj\u0119 j\u0119zykow\u0105, po wej\u015bciu na stron\u0119 wystarczy przewin\u0105\u0107 na sam d\u00f3\u0142 i wybra\u0107 odpowiedni j\u0119zyk. Niestety nie wszystkie elementy s\u0105 przet\u0142umaczone, ale da si\u0119 z tym \u017cy\u0107.<\/p>\n<p><img class=\"aligncenter\" src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/df6ff096b4ef3c64d3bffec6cb217616.png\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>W sumie nie ma sensu opisywa\u0107 krok po kroku jak za\u0142o\u017cy\u0107 konto. Formularz jest typowy i dost\u0119pny przez przycisk &#8222;Zarejestruj si\u0119&#8221;:<\/p>\n<p><a href=\"https:\/\/2captcha.com\/pl\/auth\/register\"><img class=\"aligncenter\" src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/cedd492fe864dc5d00d6aa7ad3168ced.png\" \/><\/a>Za\u0142adowanie konta \u015brodkami mo\u017ce (cho\u0107 nie powinno) sprawia\u0107\u00a0problemy. Oto proces \u0142adowania konta krok po kroku:<\/p>\n<p>1. Zaloguj si\u0119 do swojego konta 2captcha.com.<\/p>\n<p>2. Kliknij &#8222;Add Funds&#8221;:<\/p>\n<p><img src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/49bef912bb05696efe288dbf57e18ea9.png\" \/><\/p>\n<p>3. Wybierz pierwsz\u0105 opcj\u0119 &#8222;PayPro&#8221;:<\/p>\n<p><img src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/089f4872f429d761e92eb1f3b2aa312d.png\" \/><\/p>\n<p>4. Podaj kwot\u0119 (minimum 10$) i kliknij &#8222;ADD FUNDS&#8221;:<\/p>\n<p><img src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/59eebbfeace687ccfb69ad37f21e0251.png\" \/><\/p>\n<p>5. Wype\u0142nij swoje dane:<\/p>\n<p><img src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/9ef9d4b22d7c1ff0ff2aaa96651f2810.png\" \/><\/p>\n<p>6. Wybierz form\u0119 p\u0142atno\u015bci:<\/p>\n<p><img src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/c576b34386741d620dc4c44abff20152.png\" \/><\/p>\n<p>Jak wida\u0107 do wyboru mamy kilka opcji, standardowo najbardziej przydatne b\u0119d\u0105 &#8222;Karta kredytowa&#8221;, &#8222;PayPal&#8221; oraz &#8222;Przelew bankowy w czasie rzeczywistym&#8221;. Opcji karty kredytowej i PayPal nikomu nie trzeba t\u0142umaczy\u0107, je\u015bli posiada kart\u0119 kredytow\u0105 lub konto PayPal. Natomiast przypadku wybrania opcji &#8222;Przelew bankowy w czasie rzeczywistym&#8221;, mamy mo\u017cliwo\u015b\u0107 zrobienia przelewu przez &#8222;Przelewy24.pl&#8221; lub &#8222;Trustly&#8221;:<\/p>\n<p><img src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/25d6cfc627affa68d0daa79a2d959bb2.png\" \/><\/p>\n<p>7. Po wybraniu odpowiedniej formy p\u0142atno\u015bci kliknij &#8222;Z\u0142\u00f3\u017c zam\u00f3wienie&#8221;, doko\u0144cz p\u0142atno\u015b\u0107 i gotowe! Maksymalnie po kilku minutach na Twoim koncie 2captcha.com pojawi\u0105 si\u0119 \u015brodki (o ile nie wybra\u0142e\u015b opcji &#8222;Przelew bankowy&#8221;).<\/p>\n<h2>Skrypt do sprawdzania pozycji w Google<\/h2>\n<p>Wiemy ju\u017c, \u017ce odblokowanie limitu zapyta\u0144 do wyszukiwarki Google zrealizujemy za pomoc\u0105 2captcha.com. Skorzystanie z tej mo\u017cliwo\u015bci wi\u0105\u017ce si\u0119 oczywi\u015bcie ze zmienieniem kodu skryptu zaprezentowanego na samym pocz\u0105tku tego artyku\u0142u. Zapominamy o\u00a0nim i budujemy nowy w oparciu o bibliotek\u0119 CURL w PHP. \u017beby nie bawi\u0107 si\u0119 z podstawami biblioteki CURL po prostu skorzystajmy z mojej gotowej, prostej klasy, kt\u00f3r\u0105 do\u0142\u0105czam do skryptu (plik curl.php).<\/p>\n<p>Ca\u0142y skrypt do sprawdzania pozycji ma 51\u00a0linijek kodu wliczaj\u0105c w to komentarze (bez komentarzy\u00a0jest to zaledwie 41 linii):<\/p>\n<div class=\"codecolorer-container php solarized-light\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/><\/div><\/td><td><div class=\"php codecolorer\"><span class=\"kw1\">require<\/span> <span class=\"st_h\">'curl.php'<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$curl<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">new<\/span> curl<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$fraza<\/span> <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$_GET<\/span><span class=\"br0\">&#91;<\/span><span class=\"st_h\">'fraza'<\/span><span class=\"br0\">&#93;<\/span>?<span class=\"re0\">$_GET<\/span><span class=\"br0\">&#91;<\/span><span class=\"st_h\">'fraza'<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">:<\/span><span class=\"st_h\">'blog o pozycjonowaniu'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"co1\">\/\/szukana fraza<\/span><br \/>\n<span class=\"re0\">$strona<\/span> <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$_GET<\/span><span class=\"br0\">&#91;<\/span><span class=\"st_h\">'strona'<\/span><span class=\"br0\">&#93;<\/span>?<span class=\"re0\">$_GET<\/span><span class=\"br0\">&#91;<\/span><span class=\"st_h\">'strona'<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">:<\/span><span class=\"st_h\">'xn--okazwoka-bpb.pl'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"co1\">\/\/szukana strona<\/span><br \/>\n<span class=\"re0\">$_2captchakey<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">'API_KEY'<\/span><span class=\"sy0\">;<\/span> <span class=\"co1\">\/\/klucz API 2captcha.com<\/span><br \/>\n<span class=\"co1\">\/\/wyszukujemy fraz\u0119<\/span><br \/>\n<span class=\"re0\">$response<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$curl<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">get<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;https:\/\/www.google.pl\/search?num=100&amp;start=0&amp;hl=pl&amp;q=&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"kw3\">trim<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw3\">urlencode<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fraza<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;&amp;gws_rd=cr,ssl&amp;ie=UTF-8&amp;oe=UTF-8&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$curl<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getHttpCode<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">==<\/span> <span class=\"nu0\">429<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"co1\">\/\/je\u015bli kod odpowiedzi jest 429, oznacza to \u017ce zapytania s\u0105 zablokowane<\/span><br \/>\n<span class=\"co1\">\/\/pobieramy niezb\u0119dne dane recaptcha<\/span><br \/>\n<span class=\"re0\">$sitekey<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$curl<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getByXpath<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;\/\/div\/@data-sitekey&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$skey<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$curl<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getByXpath<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;\/\/div\/@data-s&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$f_action<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$curl<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getByXpath<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;\/\/form\/@action&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$q_id<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$curl<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getByXpath<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;\/\/input[@name='q']\/@value&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$f_continue<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$curl<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getByXpath<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;\/\/input[@name='continue']\/@value&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$pageUrl<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$curl<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getUrl<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"co1\">\/\/wysy\u0142am recaptcha do rozwi\u0105zania<\/span><br \/>\n<span class=\"re0\">$retrieve<\/span><span class=\"sy0\">=<\/span> <span class=\"kw3\">file_get_contents<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;http:\/\/2captcha.com\/in.php?key=&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$_2captchakey<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;&amp;json=1&amp;method=userrecaptcha&amp;googlekey=&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$sitekey<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;&amp;data-s=&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$skey<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;&amp;pageurl=&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$pageUrl<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$first<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw3\">json_decode<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$retrieve<\/span><span class=\"sy0\">,<\/span><span class=\"kw4\">true<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$first<\/span><span class=\"br0\">&#91;<\/span><span class=\"st_h\">'status'<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">!=<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span> <span class=\"kw3\">die<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Problem z wys\u0142aniem Recaptcha do 2captcha.com'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span> <span class=\"re0\">$hello<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$first<\/span><span class=\"br0\">&#91;<\/span><span class=\"st_h\">'request'<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span> <span class=\"br0\">&#125;<\/span> <span class=\"co1\">\/\/otrzymuj\u0119 id z 2captcha, potrzebne do p\u00f3\u017aniejszego pobrania g-recaptcha-response }<\/span><br \/>\n<span class=\"co1\">\/\/przygotowuj\u0119 adres do odpytania (pobranie rozwi\u0105zania)<\/span><br \/>\n<span class=\"re0\">$con<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;http:\/\/2captcha.com\/res.php?key=&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$_2captchakey<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;&amp;json=1&amp;action=get&amp;id=&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$hello<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"co1\">\/\/odczekuj\u0119 23 sekundy<\/span><br \/>\n<span class=\"kw3\">sleep<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">23<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"co1\">\/\/pobieram odpowied\u017a<\/span><br \/>\n<span class=\"re0\">$getting<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw3\">file_get_contents<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$con<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$second<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw3\">json_decode<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$getting<\/span><span class=\"sy0\">,<\/span><span class=\"kw4\">true<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"co1\">\/\/dop\u00f3ku Captcha nie jest gotowa odczekuj\u0119 po 10 sekund i sprawdzam odpowied\u017a z 2captcha<\/span><br \/>\n<span class=\"kw1\">while<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$second<\/span><span class=\"br0\">&#91;<\/span><span class=\"st_h\">'request'<\/span><span class=\"br0\">&#93;<\/span> <span class=\"sy0\">==<\/span> <span class=\"st_h\">'CAPCHA_NOT_READY'<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"kw3\">sleep<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">10<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$getting<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw3\">file_get_contents<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$con<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$second<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw3\">json_decode<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$getting<\/span><span class=\"sy0\">,<\/span><span class=\"kw4\">true<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"re0\">$secondresult<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$second<\/span><span class=\"br0\">&#91;<\/span><span class=\"st_h\">'request'<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span> <span class=\"co1\">\/\/gotowe, rozwi\u0105zanie recaptcha: g-recaptcha-response<\/span><br \/>\n<span class=\"co1\">\/\/wype\u0142niam formularz i go wysy\u0142am<\/span><br \/>\n<span class=\"re0\">$curl<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">referer<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$contenturl<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$curl<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">setField<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'q'<\/span><span class=\"sy0\">,<\/span><span class=\"re0\">$q_id<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$curl<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">setField<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'continue'<\/span><span class=\"sy0\">,<\/span><span class=\"re0\">$f_continue<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$curl<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">setField<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'g-recaptcha-response'<\/span><span class=\"sy0\">,<\/span><span class=\"re0\">$secondresult<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$curl<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">setField<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'submit'<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">''<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$curl<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">post<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'http:\/\/ipv4.google.com\/sorry\/index'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"co1\">\/\/teraz sprawdzam wynik i szukam strony z pomoc\u0105 wyra\u017ce\u0144 regularnych<\/span><br \/>\n<span class=\"kw3\">preg_match_all<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'|&lt;a href=&quot;\/url\\?q=(.+?)&amp;amp|is'<\/span><span class=\"sy0\">,<\/span><span class=\"re0\">$curl<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">content<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><span class=\"re0\">$pozycje<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$i<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">foreach<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$pozycje<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#93;<\/span> <span class=\"kw1\">as<\/span> <span class=\"re0\">$p<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw3\">stristr<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$p<\/span><span class=\"sy0\">,<\/span><span class=\"re0\">$strona<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span> <span class=\"kw1\">echo<\/span> <span class=\"re0\">$pozycja<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;Strona <span class=\"es4\">{$strona}<\/span> na fraz\u0119 <span class=\"es4\">{$fraza}<\/span> ma pozycj\u0119 <span class=\"es4\">{$i}<\/span>&quot;<\/span><span class=\"sy0\">;<\/span> <span class=\"kw1\">break<\/span><span class=\"sy0\">;<\/span> <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"re0\">$i<\/span><span class=\"sy0\">++;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span><span class=\"re0\">$pozycja<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span> <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'Poza 100'<\/span><span class=\"sy0\">;<\/span><span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<h3>Jak u\u017cywa\u0107 ten monitoring?<\/h3>\n<h4>Pobierz pliki skryptu<\/h4>\n<p>Pliki dost\u0119pne pod tym linkiem (archiwum zip):\u00a0<a href=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/php_monitor_google_2captcha.zip\">php_monitor_google_2captcha<\/a><\/p>\n<h4>Wypakuj zawarto\u015b\u0107 na dysk<\/h4>\n<h4>Podaj klucz API z 2captcha.com<\/h4>\n<p>Gdzie znale\u017a\u0107 klucz API? Otw\u00f3rz panel 2captcha.com i zjed\u017a nieco ni\u017cej, sw\u00f3j klucz znajdziesz w takim oknie:<\/p>\n<p><img class=\"aligncenter\" src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/857ae84b03c42b83c09fffdd8d70e701.png\" \/><\/p>\n<p>Gdzie wklei\u0107? Otw\u00f3rz plik index.php za pomoc\u0105 <a href=\"https:\/\/notepad-plus-plus.org\/downloads\/\" target=\"_blank\" rel=\"noopener noreferrer\">NotePad++<\/a> i podaj klucz w linii numer 6:<\/p>\n<p><img src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/19ce61d5e4f183da4f3e9e74de570844.png\" \/><\/p>\n<h4>Upload plik\u00f3w na serwer<\/h4>\n<p>Zr\u00f3b upload plik\u00f3w na serwer z obs\u0142ug\u0105 PHP do wybranego folderu. Ewentualnie odpal pliki na swoim komputerze (np. za pomoc\u0105 program\u00f3w takich jak EasyPHP, XAMPP, WampServer lub podobne).<\/p>\n<h4>Otw\u00f3rz plik index.php w przegl\u0105darce<\/h4>\n<p>Zlokalizuj skrypt i otw\u00f3rz go w przegl\u0105darce (Mozilla, Opera, Chrome, IE, Safari itd.):<\/p>\n<p><img src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/eca91810d7e22531610dc6becc3337a9.png\" \/><\/p>\n<p>Jak wida\u0107 za ka\u017cdym razem sprawdzana jest fraza &#8222;blog o pozycjonowaniu&#8221; dla strony okazw\u0142oka.pl. Aby to zmieni\u0107 dodaj dwa parametry GET do adresu: &#8222;strona&#8221; oraz &#8222;fraza&#8221;, na przyk\u0142ad tak:<\/p>\n<p><img src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/e6b030715a303c9eba1aad598f8a5c32.png\" \/><\/p>\n<p>Dzi\u0119ki takiemu rozwi\u0105zaniu bez edycji pliku mo\u017cna sprawdza\u0107 dowoln\u0105 fraz\u0119 dla dowolnej domeny.<\/p>\n<h2>Podsumowanie<\/h2>\n<p>To prosty, szybki i bezproblemowy skrypt do monitorowania pozycji, z kt\u00f3rego ka\u017cdy mo\u017ce dowolnie korzysta\u0107.<\/p>\n<p>Normalnie odpowied\u017a wyszukiwarki jest bardzo szybka. Gdy skrypt b\u0119dzie si\u0119 d\u0142u\u017cej wykonywa\u0142, oznacza\u0107 to b\u0119dzie, \u017ce wyszukiwarka zaserwowa\u0142a Recapcha2 do rozwi\u0105zania, z kt\u00f3rym to musi si\u0119 upora\u0107 serwis 2captcha.com:<\/p>\n<p><img class=\"aligncenter\" src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/2f992cbed1b1e94981592676e18e88b9.png\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Pami\u0119taj, \u017ce automatyczne odpytywanie wyszukiwarki Google jest sprzeczne z &#8222;Warunkami korzystania z us\u0142ug Google&#8221;.<\/p>\n<p><img class=\"aligncenter\" src=\"http:\/\/xn--okazwoka-bpb.pl\/wp-content\/uploads\/2020\/06\/d9daf20441cd9ea3d6d2e514b3206fb5.png\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Monitorowanie pozycji w Google\u00a0bez proxy jest mo\u017cliwe. W zasadzie mo\u017cna monitorowa\u0107 bez proxy nawet tysi\u0105ce fraz dziennie. Stworzymy&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":4669,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[190],"tags":[],"_links":{"self":[{"href":"http:\/\/xn--okazwoka-bpb.pl\/index.php\/wp-json\/wp\/v2\/posts\/4646"}],"collection":[{"href":"http:\/\/xn--okazwoka-bpb.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/xn--okazwoka-bpb.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/xn--okazwoka-bpb.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/xn--okazwoka-bpb.pl\/index.php\/wp-json\/wp\/v2\/comments?post=4646"}],"version-history":[{"count":23,"href":"http:\/\/xn--okazwoka-bpb.pl\/index.php\/wp-json\/wp\/v2\/posts\/4646\/revisions"}],"predecessor-version":[{"id":4673,"href":"http:\/\/xn--okazwoka-bpb.pl\/index.php\/wp-json\/wp\/v2\/posts\/4646\/revisions\/4673"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/xn--okazwoka-bpb.pl\/index.php\/wp-json\/wp\/v2\/media\/4669"}],"wp:attachment":[{"href":"http:\/\/xn--okazwoka-bpb.pl\/index.php\/wp-json\/wp\/v2\/media?parent=4646"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/xn--okazwoka-bpb.pl\/index.php\/wp-json\/wp\/v2\/categories?post=4646"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/xn--okazwoka-bpb.pl\/index.php\/wp-json\/wp\/v2\/tags?post=4646"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}