Skrypt sprawdzający domain authority

0

Jest taka strona http://moonsy.com/domain_authority/ wyświetlająca domain authority strony.
Próbowałem z niej sczytać to domain authority za pomocą cURL:

<?php
        $postFields['domain'] = 'onet.pl';
        $postFields['qType'] = 'dA';
        $postFields['Submit'] = 'CHECK';
        
        $ch = curl_init('http://moonsy.com/domain_authority/');

        curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        $this->site = curl_exec($ch);
        echo $this->site;
?>

Do przycisku submit "CHECK" wszystko jest wyświetlane poprawnie, ale zamiast domain authority strony wyświetlany jest taki komunikat:

Please enable cookies in your browser for use this tool.
If you are using incognito mode please disable it for use this tool.

Pierwszy raz się z czymś takim stykam. Z czego to może wynikać?

0

Że strona z której pobierasz dane jest wredna i sprawdza czy wysyłasz jakieś ciasteczko, które pewnie wysyła wraz z otwarciem pierwszej strony.

0

Czy można coś z tym zrobić?

0

włącz w curlu obsługę ciastek, przez curl_setopt($ch, CURLOPT_COOKIEFILE, $plik_z_cookiesami);

curl_setopt($ch, CURLOPT_COOKIEFILE, tempnam(sys_get_temp_dir(), 'cookie')); // plik z ciachami

potem zwyczajnie ściągnij stronę główną i dopiero potem tę którą chcesz
jeśli chcesz przyspieszyć ściąganie niepotrzebnej strony to możesz ściągnąć tylko nagłówek metodą HEAD:

curl_setopt($ch, CURLOPT_NOBODY, true);
0

unikalna_nazwa, spróbowałem napisać skrypt wg. Twoich zaleceń:

<?php
$ckfile = tempnam ("/tmp", "cookie"); // plik cookie

$ch = curl_init ("http://moonsy.com/"); // najpierw strona glowna
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);

$postFields['domain'] = 'onet.pl';
$postFields['qType'] = 'dA';
$postFields['Submit'] = 'CHECK';
$ch = curl_init ("http://moonsy.com/domain_authority/"); // a natepnie strona na ktorej mi zalezy
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);

echo $output;
curl_close($ch);
?>

ale coś mi nie wyszło, bo nadal strona nie zwraca domain authority, tylko jest ten błąd.
Co więc robię źle?

0

@unikalna_nazwa podał Ci nie do końca poprawne rozwiązanie.
COOKIEFILE służy do wysyłania istniejących ciasteczek, natomiat ciasteczka odbierane będą odrzucane. Do tego jest COOKIEJAR (konkretniej: CURLOPT_COOKIEJAR). Ustaw także tę opcję, ścieżka niech będzie taka sama jak COOKIEFILE. I powinno ruszyć.

0
dzek69 napisał(a):

@unikalna_nazwa podał Ci nie do końca poprawne rozwiązanie.
COOKIEFILE służy do wysyłania istniejących ciasteczek, natomiat ciasteczka odbierane będą odrzucane. Do tego jest COOKIEJAR (konkretniej: CURLOPT_COOKIEJAR). Ustaw także tę opcję, ścieżka niech będzie taka sama jak COOKIEFILE. I powinno ruszyć.

no tak faktycznie - zapomniałem o COOKIEJAR
w każdym razie, przetestowałem teraz tę stronkę i okazuje się że strona w ogóle nie wysyła już mi plików cookie po ich jednorazowym skasowaniu i już nie mogę sprawdzać domen na tej stronie
zupełnie jakbym dostał bana na IP

0

Ta strona celowo chwali się, że nie ma CAPTCHY, bo wie, że przeciwko botom i tak będzie skuteczna.. Wszystko da się oszukać, ale tak proste mechanizmy jak ten z posta - to było wiadome, że nie przejdzie ;]

0
unikalna_nazwa napisał(a):

no tak faktycznie - zapomniałem o COOKIEJAR
w każdym razie, przetestowałem teraz tę stronkę i okazuje się że strona w ogóle nie wysyła już mi plików cookie po ich jednorazowym skasowaniu i już nie mogę sprawdzać domen na tej stronie
zupełnie jakbym dostał bana na IP

Po wstawieniu do skryptu:

curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile); 

przy pierwszym uruchomieniu tego skryptu też miałem komunikat o banie:

Automatic queries and proxy checks
are not allowed at our website.

IP ********** was blocked, because
we are detected automatic queries or proxy checks
from this IP to Domain Authority .

Taki sam komunikat dostaję gdy normalnie jako użytkownik wchodzę na stronę:
http://moonsy.com/domain_authority/

Natomiast przy następnych uruchomieniach skryptu nie ma już komunikatu o banie, tylko wyświetla się ten komunikat:

Please enable cookies in your browser for use this tool.
If you are using incognito mode please disable it for use this tool.

0
dzek69 napisał(a):

Ta strona celowo chwali się, że nie ma CAPTCHY, bo wie, że przeciwko botom i tak będzie skuteczna.. Wszystko da się oszukać, ale tak proste mechanizmy jak ten z posta - to było wiadome, że nie przejdzie ;]

Mi po prostu chodzi o możliwość odczytania domain authority.
Pomyślałem, że pójdę po linii najmniejszego oporu i zrobię to korzystając z http://moonsy.com/domain_authority/ + cURL, ale skoro ta strona ma specjalne zabezpieczania, to może lepiej będzie poszukać innego sposób na odczytanie domain authority?

Czy ma ktoś jakieś pomysły?

0

Tak, są do tego gotowce, widzę, że nawet za darmo: http://code.google.com/p/seostats/#seostats.google.php

Czasem warto zajrzeć do Googli przed wynajdywaniem koła na nowo ;)

0

Która metoda w klasie SEOstats_Google zwraca DA?
Jestem tam np. SEOstats_Google::Google_PR zwracająca PR, ale nie mogę znaleźć tej metody do DA.

Za to znalazłem taką metodę w klasie SEOstats_Seomoz (dostępnej tutaj http://code.google.com/p/seostats/#seostats.seomoz.php):

<?php
include 'eyecatchup-SEOstats-ee33ea3/src/class.seostats.php';

try
{
        $url = 'http://onet.pl';
        $statystyki = SEOstats_Seomoz::Seomoz_Authority($url);
        echo "<pre>";
        print_r($statystyki);
        echo "</pre>";

}
catch (SEOstatsException $e)
{
        die($e->getMessage());
}
?>

Niestety zawraca tylko pustą tablicę:

Array
(
[Title] =>
[URL] =>
[External Links] =>
[Links] =>
[URL Authority] =>
[URL mozRank] =>
[Subdomain mozRank] =>
[HTTP Status Code] =>
[Page Authority] =>
[Domain Authority] =>
)

Gdzie więc popełniam błąd?

0

Nie chce mi się wgłębiać tak bardzo w to, ale jeżeli podążyłeś za dokumentacją i przykładami, to może coś jest nie tak z biblioteką, ja linka znalazłem dla Ciebie na szybko, więc sie nie wgłębiałem, ale Ty mogłeś przeczytać widoczny na samej górze strony, do której link Ci podałem boks zatytułowany Important Update. Sprawdź zaktualizowaną wersję tego, dodatkowo na szybko jak spojrzałem, to tam coś pisze o kluczach do SEOMoz - możliwe, że gdzieś w pliczku konfiguracyjnym musisz podać jakieś klucze, które otrzymasz rejestrując się po taki klucz API na stronach SEOMoz - nie wiem, poczytaj, poszukaj. Jak coś - to to raczej nie jest jedyna biblioteka do takich zastosowań, a na Google znajdziesz mnóstwo pytań typu "jak sprawdzić domain authority php" (szczególnie dobre odpowiedzi z pewnością dostaniesz wpisując to samo po angielsku).

0
dzek69 napisał(a):

Ta strona celowo chwali się, że nie ma CAPTCHY, bo wie, że przeciwko botom i tak będzie skuteczna.. Wszystko da się oszukać, ale tak proste mechanizmy jak ten z posta - to było wiadome, że nie przejdzie ;]

Tylko jak oszukać?

Trzeba by było chyba "podsłuchać" jakie informacje przesyłana są pomiędzy przeglądarką a serwerem, tylko jak to zrobić?

0

Nie abusuj, szukaj rozwiązań, które służą do tego, co próbujesz zrobić.

0

Pamiętałeś o podszyciu się pod przegladarkę i podaniu strony z której rzekomo natrafiłeś?

$_useragent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1';
$referer = 'adres strony z której potencjalnie mogłeś wejść';
curl_setopt($s,CURLOPT_HTTPHEADER,array('Expect:'));
curl_setopt($s,CURLOPT_USERAGENT,$useragent);
curl_setopt($s,CURLOPT_REFERER,$referer);
0

Dzięki, ale nie pomogło.

0

ciekawe, że ja zostałem od razu zablokowany jako robot, chociaż pojawiłem się na tej stronie po raz pierwszy w życiu i użyłem zwykłego ff.

1 użytkowników online, w tym zalogowanych: 0, gości: 1