парсинг pr getHash для РФ доменов у кого получилось

Discussion in 'PHP' started by NitroM$I, 10 Jul 2011.

  1. NitroM$I

    NitroM$I Member

    Joined:
    15 Feb 2009
    Messages:
    40
    Likes Received:
    9
    Reputations:
    0
    Добрый день.

    Спарсить морду получилось без проблем.

    Парсю пр медведя страницу новостей http://президент.рф/новости - 6 pr.

    Вот как это делает тоол бар гугля:

    Code:
    http://toolbarqueries.google.ru/tbr?features=Rank&sourceid=navclient-ff&client=navclient-auto-ff&googleip=O;212.188.7.30;197&iqrn=Q2oD&querytime=wN&orig=0nKzZ&swwk=428&ch=8dae8a6b6&q=info:http%3A%2F%2Fxn--d1abbgf6aiiy.xn--p1ai%2F%25D0%25BD%25D0%25BE%25D0%25B2%25D0%25BE%25D1%2581%25D1%2582%25D0%25B8
    PHP:
    if(preg_match("#[а-я]#i"$url))
    {
        if(!
    $url1=$web->Url($url1, -1, -11)) exit('0');
        require(
    '../idna_convert.class.php');
        
    $idn=new idna_convert();
        
    $url1=$idn->encode(iconv("CP1251""UTF-8"$url1));
        
    $url2=preg_replace("#^(http(s|)://).{0,}/(.{0,})#Ui""$2"$url);
        
    $url=iconv("CP1251""UTF-8"$url1.urlencode(iconv("CP1251""UTF-8"$url2)));
        unset(
    $idn);
    }

    $url="http://toolbarqueries.google.com/search?sourceid=navclient-ff&features=Rank&client=navclient-auto-ff&ch=8".getHash($url)."&q=info:".urlencode($url);
    как получить это проклятый хэш? уже как не пытался и с кодировкой игрался и с url encode|decode.


    Правильный хэш-код "8dae8a6b6" тот который у меня получаеться "8e1c6b0fa" ...

    Ф-ции для получения кэша
    PHP:
    function getHash($value)

        
    $hashSeed "Mining PageRank is AGAINST GOOGLE'S TERMS OF SERVICE.Yes, I'm talking to you, scammer."
        
    $intValue 16909125
        for(
    $i 0$i strlen($value); $i++ )
        { 
            
    $intValue ^= ord($hashSeed[$i strlen($hashSeed)]) ^ 
            
    ord($value[$i]); 
            
    $intValue getShift($intValue,  23) | $intValue << 9
        } 
        return 
    str_replace(' ''',getU32($intValue));
    }
    function 
    toHex8($num)

        
    $vector '0123456789abcdef'
        return 
    $vector[($num 256) / 16] . $vector[$num 16];
    }
    function 
    getU32($num)

        return 
    toHex8(getShift($num24)) . toHex8(getShift($num16) & 255). 
        
    toHex8(getShift($num8) & 255) . toHex8($num 255);

    function 
    getShift($a$b)

        
    $z hexdec(80000000); 
        if(
    $z $a)
        {
            
    $a = ($a >> 1);$a &= (~$z);$a |= 0x40000000;$a = ($a >> ($b-1));
        }
        else 
    $a = ($a >> $b); 
        return 
    $a
    }
    Помогите пожалуйста, уже пальцы болят проверять все возможные варианты.