[GET] Script For Searching For Aged PR Domains

laetus

Registered Member
Joined
Apr 4, 2009
Messages
87
Reaction score
82
Hi guys!

This is a demo script for searching for expiring aged PR domain. I've wrote this script todays morning and this works fine for me. This stuff contains just basic functionality and need to be improved to help a lot in PR domains research. If any of you interested in a full version of this script - please, let me know.

Here is the stuff:
PHP:
<?php

define('GMAG', 0xE6359A60);

function nooverflow($a)
{
    while ($a < -2147483648) {
        $a += 2147483648 + 2147483648;
    }

    while ($a > 2147483647) {
        $a -= 2147483648 + 2147483648;
    }

    return $a;
}

function zeroFill($x, $bits)
{
    if ($bits == 0) {
       return $x;
    }

    if ($bits == 32) {
        return 0;
    }

    $y = ($x & 0x7FFFFFFF) >> $bits;

    if (0x80000000 & $x) {
       $y |= (1 << (31 - $bits));
    }

    return $y;
}

function mix($a, $b, $c)
{
    $a = (int) $a;
    $b = (int) $b;
    $c = (int) $c;

    $a -= $b; $a -= $c; $a = nooverflow($a); $a ^= (zeroFill($c, 13));
    $b -= $c; $b -= $a; $b = nooverflow($b); $b ^= ($a << 8);
    $c -= $a; $c -= $b; $c = nooverflow($c); $c ^= (zeroFill($b, 13));
    $a -= $b; $a -= $c; $a = nooverflow($a); $a ^= (zeroFill($c, 12));
    $b -= $c; $b -= $a; $b = nooverflow($b); $b ^= ($a << 16);
    $c -= $a; $c -= $b; $c = nooverflow($c); $c ^= (zeroFill($b, 5));
    $a -= $b; $a -= $c; $a = nooverflow($a); $a ^= (zeroFill($c, 3));
    $b -= $c; $b -= $a; $b = nooverflow($b); $b ^= ($a << 10);
    $c -= $a; $c -= $b; $c = nooverflow($c); $c ^= (zeroFill($b, 15));

    return array($a, $b, $c);
}

function GCH($url, $length = null, $init = GMAG)
{
    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)
{
    $result = null;

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

    return $result;
}

function getPageRank($aUrl)
{
    $url = 'info:'.$aUrl;
    $ch = GCH(strord($url));
    $url = 'info:'.urlencode($aUrl);

    $pr_str = fetch("http://www.google.com/search?client=navclient-auto&ch=6$ch&ie=UTF-8&oe=UTF-8&features=Rank&q=$url");

    return substr($pr_str, strrpos($pr_str, ':') + 1);
}

function fetch($url)
{
    $response = false;

    $curlHandler = curl_init($url);

    curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, 1);
    $response = curl_exec($curlHandler);
    curl_close($curlHandler);

    return $response;
}

set_time_limit(0);

if ($xml = simplexml_load_file('http://www.name.com/rss/expired_domains.xml.php', 'SimpleXMLElement', LIBXML_NOCDATA)) {

    echo '<table border="1" cellpadding="2" cellspacing="0" align="center">'."\n";
    echo '<tr>
    <th>Domain</th>
    <th>PR</th>
    <th>Expired</th>
    <th>Current price</th>
    <th>Buy link</th>
</tr>'."\n";

    foreach ($xml->xpath('/rss/channel/item') as $item) {
        if (!empty($item->title)) {
            $domain = $item->title;
            $pr = trim(getPageRank($domain));

            if (!empty($pr)) {
                $expireGMTTime = strtotime($item->pubDate);
                $nowGMTTime = gmdate('U', time());

                $daysLeft = ($expireGMTTime - $nowGMTTime) / 86400;

                $price = ((4 <= $daysLeft) ? 29.95 : ((3 <= $daysLeft) ? 24.95 : ((2 <= $daysLeft) ? 19.95 : 9.95)));

                echo "<tr>
    <td>$domain</td>
    <td>$pr</td>
    <td>{$item->pubDate}</td>
    <td>\$$price</td>
    <td><a href=\"{$item->link}\" target=\"_blank\">Buy now</a></td>
</tr>\n";
                flush();
            }
        }
    }

    echo '</table>';
}
Enjoy!
 
Ok guys I'll try to explain you some details about the full version. This script uses RSS feed of name.com to get the list of expiring domains and just collect info about PR to filter out domains having PR=0. In the full version of this script just some useful filters will be added, such as overall domain age, Alexa Rank, etc... But quantity of avaliable domains will remain the same. This list updates every day.

I'm also guess what the cron-running version of this script will be useful. I.e. you should once set up the cron job and give the script some rules about domain you wish to get (such as PR, age, KW, etc...) and script will monitor list for the items you want to get. Once this item will be found you'll get an email notification immediately.

If you'd like to see some addtional functions in this script - feel free to post your suggestions here (or just PM me)

Thanks!
 
If you'd like to see some addtional functions in this script - feel free to post your suggestions here (or just PM me)

I'd like to know if the domain...

Is registered on DMOZ
Has existing backlinks (and how many)
Is present in the GoBackMachine

Also I'd love to get an instant notification of available domains via Twitter DM
 
Thank you bro for these reasonable suggestions!
I'd like to know if the domain...

Is registered on DMOZ
Has existing backlinks (and how many)
Is present in the GoBackMachine

Also I'd love to get an instant notification of available domains via Twitter DM
 
Full version for me if you don't mind, do I have to PM you ? or you'll posted here openly?

best rgds
 
I'm planning to run the beta of this app on my hosting and will give access (login/pass) to each who interested. If application will be useful then maybe I'll develop a commercial standalone version or paid webservice. I have some ideas about ways of using this application which could be interesting ;)
Full version for me if you don't mind, do I have to PM you ? or you'll posted here openly?

best rgds
 
Back
Top