Google сменил алгоритм формирования checksum?

12
I
На сайте с 10.01.2011
Offline
0
#11

Californiy, мне тоже скинь в личку, если не сложно!

У самого еще не дошли руки, разобраться в чем дело.

Заранее спасибо.

Californiy
На сайте с 12.12.2006
Offline
95
#12

Не скинется. Не включена у тебя сия функция.

Тружусь в sapiense.com.
TM
На сайте с 28.10.2008
Offline
70
#13
Californiy:
Не скинется. Не включена у тебя сия функция.

Мля.... истинный жлобо-хохол! 😂

В такие моменты стыдно за то, что я сам украинец. Этож надо.... чувак нашел ВЕЛИКИЙ СЕКРЕТ! Поделится исключительно выборочно и на своих мега условиях! ППЦ!

П
На сайте с 19.04.2005
Offline
104
#14
Californiy:
Сабж: сегодня перестали работать некоторые наши сервисы, которые подвязаны на определение google pr. Запросы, через тулбар и сеоквейк, дают какую-то новую переменную ch, начинающуюся с 6-ки. be1.ru/stat/ не работает с нами за компанию.

года два уже или более, как чек-сумма начинается с 6-ки

вот например урл для ПР данного форума

/

где ch=6807013314

определялся по данному алгоритму, ниже кусок кода из старого перл скрипта, думаю программисты сообразят как это вставить в PHP


$ch = '6'._compute_ch_new('info:'.$url);

sub _compute_ch_new {
my $url = shift;

my $ch = _compute_ch($url);
$ch = (($ch % 0x0d) & 7) | (($ch / 7) << 2);

return _compute_ch(pack("V20", map {my $t = $ch; _wsub($t, $_*9); $t} 0..19));
}

sub _compute_ch {
my $url = shift;

my @url = map {ord $_} split '', $url;
my ($a, $b, $c, $k) = (0x9e3779b9, 0x9e3779b9, 0xe6359a60, 0);
my $len = scalar @url;

while ($len >= 12) {
_wadd($a, $url[$k+0] | ($url[$k+1] << 8) | ($url[$k+2] << 16) | ($url[$k+3] << 24));
_wadd($b, $url[$k+4] | ($url[$k+5] << 8) | ($url[$k+6] << 16) | ($url[$k+7] << 24));
_wadd($c, $url[$k+8] | ($url[$k+9] << 8) | ($url[$k+10] << 16) | ($url[$k+11] << 24));

_mix($a, $b, $c);

$k += 12;
$len -= 12;
}

_wadd($c, scalar @url);

_wadd($c, $url[$k+10] << 24) if $len > 10;
_wadd($c, $url[$k+9] << 16) if $len > 9;
_wadd($c, $url[$k+8] << 8) if $len > 8;
_wadd($b, $url[$k+7] << 24) if $len > 7;
_wadd($b, $url[$k+6] << 16) if $len > 6;
_wadd($b, $url[$k+5] << 8) if $len > 5;
_wadd($b, $url[$k+4]) if $len > 4;
_wadd($a, $url[$k+3] << 24) if $len > 3;
_wadd($a, $url[$k+2] << 16) if $len > 2;
_wadd($a, $url[$k+1] << 8) if $len > 1;
_wadd($a, $url[$k]) if $len > 0;

_mix($a, $b, $c);

return $c; # integer is positive always
}

sub _mix {
my ($a, $b, $c) = @_;

_wsub($a, $b); _wsub($a, $c); $a ^= $c >> 13;
_wsub($b, $c); _wsub($b, $a); $b ^= ($a << 8) % 4294967296;
_wsub($c, $a); _wsub($c, $b); $c ^= $b >>13;
_wsub($a, $b); _wsub($a, $c); $a ^= $c >> 12;
_wsub($b, $c); _wsub($b, $a); $b ^= ($a << 16) % 4294967296;
_wsub($c, $a); _wsub($c, $b); $c ^= $b >> 5;
_wsub($a, $b); _wsub($a, $c); $a ^= $c >> 3;
_wsub($b, $c); _wsub($b, $a); $b ^= ($a << 10) % 4294967296;
_wsub($c, $a); _wsub($c, $b); $c ^= $b >> 15;

@_[0 .. $#_] = ($a, $b, $c);
}

sub _wadd { $_[0] = int(($_[0] + $_[1]) % 4294967296);}
sub _wsub { $_[0] = int(($_[0] - $_[1]) % 4294967296);}

давно читал упоминания, что данный алгоритм может не работать на 64-разрядным машинах

Вечные ссылки в рассрочку, отобраны только качественные доноры Регистрация по приглашению -> http://gogettop.ru/?ref=18973 (http://gogettop.ru/?ref=18973)
Californiy
На сайте с 12.12.2006
Offline
95
#15

У нас было что-то похожее, но теперь судя по всему не работает.

Сейчас юзаем такой:

<?php
function HashURL($url)
{
$SEED = "Mining PageRank is AGAINST GOOGLE'S TERMS OF SERVICE.
Yes, I'm talking to you, scammer.";
$Result = 0x01020345;

for ($i=0; $i<strlen($url); $i++)
{
$Result ^= ord($SEED{$i%strlen($SEED)}) ^ ord($url{$i});
$Result = (($Result >> 23) & 0x1FF) | $Result << 9;
}

return sprintf("8%x", $Result);
}
$url = 'http://www.google.com.ua/';
$hash = HashURL($url);
echo $hash;
?>
Петр Елагин
На сайте с 21.03.2007
Offline
197
#16
Californiy:
Все забывается. И это забудется. А те, кто не забудут, будут тихонько в уголке жмотиться. От них ни холодно, ни жарко.

Зачастую серч ненужен, для решения 99.95% вопросов. Просто иногда банальное лень.

Кому надо, скинет мыльник, я отпишу.

Я не понимаю, это чтоли заветное знание ))) типа вы один его знаете а все остальнные нет ?

)))))

http://www.google.ru/search?hl=ru&newwindow=1&client=opera&hs=cGS&rls=ru&channel=suggest&&sa=X&ei=p5orTYH4D4jusgb37_GHCA&ved=0CBoQBSgA&q=python+pagerank&spell=1

удивляют меня такие посты.

AlienZzzz добавил 11.01.2011 в 02:50

Вот мое ))) по крайней мере работала всегда ))))


class pr( googleCommon ):
"""ПР"""
_googleBar = 'http://www.google.ru/search?client=navclient-auto&features=Rank:&q=info:%s&ch=%s'
@staticmethod
def url( oParam ):
sHash = pr.CheckHash( pr.HashURL( oParam['domain'] ) )
sLink = pr._googleBar % ( web.quoteUrl( oParam['domain'] ), sHash )
return { 'url' : sLink }
@staticmethod
def process( oContent, oParam = {} ):
iPr = None
if oContent.content != None and oContent.content != '':
sContent = oContent.content.lstrip( ).rstrip( )
sContent = sContent[9:]
try:
iPr = int( sContent )
except:
iPr = 0
return iPr

@staticmethod
def CheckHash( HashInt ):
HashStr = "%u" % (HashInt)
Flag = 0
CheckByte = 0

i = len(HashStr) - 1
while i >= 0:
Byte = int(HashStr)
if 1 == (Flag % 2):
Byte *= 2;
Byte = Byte / 10 + Byte % 10
CheckByte += Byte
Flag += 1
i -= 1

CheckByte %= 10
if 0 != CheckByte:
CheckByte = 10 - CheckByte
if 1 == Flag % 2:
if 1 == CheckByte % 2:
CheckByte += 9
CheckByte >>= 1

return '7' + str(CheckByte) + HashStr

@staticmethod
def IntStr( String, Integer, Factor):
for i in range(len(String)) :
Integer *= Factor
Integer &= 0xFFFFFFFF
Integer += ord(String)
return Integer

@staticmethod
def HashURL( Str):
C1 = pr.IntStr(Str, 0x1505, 0x21)
C2 = pr.IntStr(Str, 0, 0x1003F)

C1 >>= 2
C1 = ((C1 >> 4) & 0x3FFFFC0) | (C1 & 0x3F)
C1 = ((C1 >> 4) & 0x3FFC00) | (C1 & 0x3FF)
C1 = ((C1 >> 4) & 0x3C000) | (C1 & 0x3FFF)

T1 = (C1 & 0x3C0) << 4
T1 |= C1 & 0x3C
T1 = (T1 << 2) | (C2 & 0xF0F)

T2 = (C1 & 0xFFFFC000) << 4
T2 |= C1 & 0x3C00
T2 = (T2 << 0xA) | (C2 & 0xF0F0000)

return (T1 | T2)

angr
На сайте с 11.05.2006
Offline
413
#17

секрет Полишинеля :)

Требуется СЕО-Специалист в Кишиневе, в офис. ()
domainrealt
На сайте с 09.11.2007
Offline
161
#18

Не сменил, во всяком случае старый алгоритм работает, что проверено по сайтам где известен ПР

Домены с PR4-6.
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий