парсинг 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($url, 1, -1, -1, 1)) 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($num, 24)) . toHex8(getShift($num, 16) & 255). 
        
    toHex8(getShift($num, 8) & 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; 
    }
    Помогите пожалуйста, уже пальцы болят проверять все возможные варианты.