Как получить PR используя прокси?

12
W
На сайте с 19.06.2006
Offline
142
#11

Киньте весь класс граббера с использованием прокси. Херня какая-то... По логике, не должно быть такого.

montanara
На сайте с 08.02.2006
Offline
118
#12
wayly:
Киньте весь класс граббера с использованием прокси. Херня какая-то... По логике, не должно быть такого.

Здесь не класс, а простенький тестовый скрипт (выдает полный текст страницы, полученной от Google (чтобы было видно, какими словами послали) и выдергивает из нее PR).


<?php
define("GOOGLE_MAGIC", 0xE6359A60);

function zeroFill($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;
}

function mix($a,$b,$c) {
$a -= $b; $a -= $c; $a ^= (zeroFill($c,13));
$b -= $c; $b -= $a; $b ^= ($a<<8);
$c -= $a; $c -= $b; $c ^= (zeroFill($b,13));
$a -= $b; $a -= $c; $a ^= (zeroFill($c,12));
$b -= $c; $b -= $a; $b ^= ($a<<16);
$c -= $a; $c -= $b; $c ^= (zeroFill($b,5));
$a -= $b; $a -= $c; $a ^= (zeroFill($c,3));
$b -= $c; $b -= $a; $b ^= ($a<<10);
$c -= $a; $c -= $b; $c ^= (zeroFill($b,15));
return array($a,$b,$c);
}

function GoogleCH($url, $length=null, $init=GOOGLE_MAGIC){
if(is_null($length)){
$length = sizeof($url);
}
$a = $b = 0x9E3779B9;
$c = $init;
$k = 0;
$len = $length;
while($len >= 12){
$a += ($url[$k+0] +($url[$k+1]<<8) +($url[$k+2]<<16) +($url[$k+3]<<24));
$b += ($url[$k+4] +($url[$k+5]<<8) +($url[$k+6]<<16) +($url[$k+7]<<24));
$c += ($url[$k+8] +($url[$k+9]<<8) +($url[$k+10]<<16)+($url[$k+11]<<24));
$mix = mix($a,$b,$c);
$a = $mix[0]; $b = $mix[1]; $c = $mix[2];
$k += 12;
$len -= 12;
}
$c += $length;
switch($len){
case 11: $c+=($url[$k+10]<<24);
case 10: $c+=($url[$k+9]<<16);
case 9 : $c+=($url[$k+8]<<8);
case 8 : $b+=($url[$k+7]<<24);
case 7 : $b+=($url[$k+6]<<16);
case 6 : $b+=($url[$k+5]<<8);
case 5 : $b+=($url[$k+4]);
case 4 : $a+=($url[$k+3]<<24);
case 3 : $a+=($url[$k+2]<<16);
case 2 : $a+=($url[$k+1]<<8);
case 1 : $a+=($url[$k+0]);
}
$mix = mix($a,$b,$c);
return $mix[2];
}

function strord($string)
{
for ($i = 0; $i < strlen($string); $i++)
{
$result[$i] = ord($string{$i});
}
return $result;
}

function get_source($host,$path,$proxy=false,$user_agent="Opera/9.23 (Windows NT 5.1; U; ru)")
{
if (!$ch = @curl_init()) return false;
@curl_setopt($ch, CURLOPT_URL, 'http://'.$host.$path);
@curl_setopt($ch, CURLOPT_HEADER, true);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
@curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
@curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
//@curl_setopt($ch, CURLOPT_FAILONERROR, true);
if ($proxy) @curl_setopt($ch, CURLOPT_PROXY, $proxy);
if ($p = @curl_exec($ch)) echo $p."<br>";
else echo @curl_error($ch)."<br>";
@curl_close($ch);
return $p;
}

function get_google_pr($url, $proxy = false)
{
$host = 'www.google.com';
$url = 'info:http://' . $url;
$checksum = GoogleCH(strord($url));
$google_url = sprintf('/search?client=navclient-auto&ch=6%u&features=Rank&q=' . $url, $checksum);
$p = get_source($host,$google_url,$proxy);
if ($p) {
if (preg_match('#Rank_\d+\:\d+\:(\d+)#is', $p, $arr))
return intval($arr[1]);
else
return 0;
} else return false;
}

$url = "www.rbc.ru";
$proxy = "195.229.236.106:80";
echo "$url PR=".get_google_pr($url,$proxy);

?>
W
На сайте с 19.06.2006
Offline
142
#13

Выключите подавление ошибок. Запринтить переменную $proxy перед стартом самого граббинга.

Покажите список прокси, которые вы считаете анонимными. Такое ощущение, что либо

1. Прокси не анонимные

2. Прокси не устанавливается по причине $proxy == false;

С виду, нормально выгляжит, за исключением подавления =)

Как вариант - попробуйте запросить http://www.proxyhunter.net/proxyjudge.php с сервака через свои прокси.

Попробуйте следующие прокси (за состояние не ручаюсь),


80.227.47.246:8080
220.225.0.125:8080
83.136.195.229:80
202.85.54.90:80
202.216.177.14:3128
201.234.19.13:80
203.29.67.73:80
85.255.197.198:80
201.53.186.7:8000
62.231.186.58:3128
212.8.196.174:8080
219.136.206.29:80
200.140.252.66:80
82.195.155.62:80
80.68.92.132:8080
85.114.76.46:3128
220.227.218.46:80
168.187.205.3:8080
200.44.157.85:1080
220.29.4.156:8080

Если не поможет - стучите в приват или аську 919847.

12

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