script to run a url through many url shortening services and output the shortened urls (free 301 redirects ;) ).
btw these sites run on the YOURLS platform (yourls.org).
i wrote this quickly in like 10 mins a few years ago, but it still does its job just fine. it can also output all urls in spintax and removes bad hosts automatically too.
PHP Code:
Code:
<?php
// YOURLS - URL shortening script by styx @ argo-content.com 2011
if(empty($argv[2])) usage($argv[0]);
$fl=$argv[1]; // list file
$f=file($fl); // don't touch this!
$url=urlencode($argv[2]);
$verbose=0; // show more detailed output, 0 = disabled | 1 = enabled
$spin=1; // output the urls as spintax, 0 = disabled | 1 = enabled
function curl($url,$postdata=NULL,$pr=0)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/4.0');
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
if($pr !== 0) {
curl_setopt($curl, CURLOPT_PROXY, '127.0.0.1:9050');
curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
}
curl_setopt($curl, CURLOPT_COOKIESESSION, FALSE);
curl_setopt($curl, CURLOPT_COOKIEJAR, "cookie");
curl_setopt($curl, CURLOPT_COOKIEFILE, "cookie");
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
if($postdata !== NULL) {
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
}
$html = curl_exec($curl);
curl_close($curl);
return $html;
}
function delLine($list,$line){
if(!is_writable($list)) {
die("x $file isn't writable.\n");
} else {
$arr = file($list);
}
if($fp=fopen($list,'w+')) {
foreach($arr as $ln) {
$match=trim($ln);
if(!stristr($line,$match)) {
fwrite($fp,$ln);
}
}
fclose($fp);
} else {
die("x coudln't open $file! check permissions.");
}
}
function remove_host($host,$list) {
$fa = file($list);
foreach ($fa as $f => $l) {
if(stristr($l,$host)) {
delLine($list,trim($l));
break;
}
}
}
function main() {
global $f,$fl,$url,$verbose,$spin;
$sz=count($f);
if($spin==1) print "{";
foreach($f as $n => $l) {
$host=trim($l);
if($verbose==1&and$spin==0) { // only print this if spintax is disabled..
print "(".($n+1)."/$sz) current host: $host | ";
}
$query="url=$url&keyword=";
$html = curl($host,$query);
preg_match_all("/copylink\" class=\"text\" size=\"40\" value=\"(.*)\"/i",$html,$m);
if(!empty($m[1][0])) {
$lnk=$m[1][0];
if($spin==0) {
print $lnk."\n";
} else {
if($n<($sz-1)) {
print $lnk."|";
} else {
print "$lnk";
}
}
} else {
if($verbose==1&and$spin==0) print "- removing host: $host\n";
remove_host($host,$fl);
}
}
if($spin==1) print "}\n";
}
function usage($arg) {
die("mass url shortening script by styx @ bhseos.com\nusage: <list> <url>\nexample: php $arg list.txt http://argo-content.com\n");
}
main(); // execute
?>
usage:
you need to run this from the linux (or other *nix) shell like:
Code:
php shorten.php targets.txt http://yourdomain.com
to enable verbose and/or spintax output, change the variables on top of the script:
Code:
$verbose=0; // show more detailed output, 0 = disabled | 1 = enabled
$spin=1; // output the urls as spintax, 0 = disabled | 1 = enabled
and here some working hosts (just a few as i was too lazy now to scrape new ones):
Code:
http://activ.me
http://jdivert.com
http://j.plustar.jp
http://macp.ro
http://onj.me
http://rct.me
http://urim.sourceforge.net
here are some example footprints to find sites:
Code:
intitle:"yourls -- your own url shortener"
or
"powered by Yourls"
enjoy :)