Just thought of sharing this script that I’ve been using for quite sometimes. I got it from some other forum, hence credits is mention within…
Help yourself…
gmail-signup.php - main file
<?php
/*
## Title: gMail Signup Script V00.00.01
## Author(s): Jack Ketch
## Last Update: 06-14-2008
##
## Semi-automatic script to generate free GMail accounts,
##
## Modified: Anand (netmktg / netmktg7)
## Last Update: Oct-12-2008
## This script is an extensively modified version of the original script
##
*/
require_once('opendb.php');
require_once('mailsignup-functions.php');
error_reporting(E_ALL ^ E_NOTICE);
$tmpdir = 'tmp/';
$tmpdir_abs = dirname($_SERVER['DOCUMENT_ROOT'] . $_SERVER['SCRIPT_NAME']) .'/refererx/'. $tmpdir;
$submitted = isset($_POST['Create_Account']);
if ($submitted) {
unlink($_POST['captcha_tmpfile']);
$formLocation = urldecode($_POST['formlocation']);
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$username = $_POST['username'];
$password = $_POST['password'];
$alt_email = $_POST['alt_email'];
$captcha = $_POST['captcha'];
$postQuery = $_POST['params'];
$ref = $_POST['ref'];
// $write_to_file = $_POST['write_to_file'];
// if (empty($write_to_file)) { $write_to_file = 'new-gmails.txt'; }
// the CAPTCHA is placed in the parameters, and then all the parameters are placed //
// in a single string, each one separated by '&' //
$captcha_array_key = array_search('newaccountcaptcha=',$postQuery);
$postQuery [$captcha_array_key] .= $captcha;
$query = $postQuery[0];
for ($x = 1; $x < count($postQuery); $x++) { $query .= "&" . $postQuery[$x]; }
$ch = curl_init();
$cookiefile = $tmpdir_abs . '_cookie.txt';
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$headers[] = "Cookie: X=abc; GoogleAccountsLocale_session=en; TZ=-330";
$headers[] = "Content-Type: application/x-www-form-urlencoded";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $formLocation);
curl_setopt($ch, CURLOPT_REFERER, $ref);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
$page = curl_exec($ch);
if ( strpos($page, 'but the following usernames are') ) {
print '<font color="#0000FF"><b>Gmail User NOT Available</b></font>';
return;
}
if ( strpos($page, 'characters you entered didn') ) { $captcha_msg = '<font color="#FF0000"><b>WRONG Captcha</b></font><br>'; }
if ( strpos($page, 'enter the letters as they are shown in the new image') ) { $captcha_msg = '<font color="#0000FF"><b>ADDITIONAL Captcha</b></font><br>'; }
$chk_pos = strpos($page, '<form id="createaccount"');
if ($chk_pos > 0)
{
// Gmail wants us to enter Addtional Captcha
$page = substr($page, $chk_pos);
$ref = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$parameters = parse_gmail_fields($page, $username, $password, $firstname, $lastname, $alt_email);
$formLocation = array_pop($parameters);
$captchatoken = array_pop($parameters);
$captcha_tmpfile = save_captcha($ch, $captchatoken, $tmpdir, $tmpdir_abs);
curl_close($ch);
// Display CAPTCHA to solve
$currentUrl = $PHP_SELF;
$hidden = '';
foreach($parameters as $param){
$hidden .= "<input type='hidden' name='params[]' value='$param'>\
";
}
$form = <<<INPUT_MYTEXT
<center> <table> <tr> <td>
<form method='post' action='$currentUrl'>
$hidden
<input type='hidden' name='ref' value='$ref'>
<input type='hidden' name='firstname' value='$firstname'>
<input type='hidden' name='lastname' value='$lastname'>
<input type='hidden' name='username' value='$username'>
<input type='hidden' name='password' value='$password'>
<input type='hidden' name='alt_email' value='$alt_email'>
<input type='hidden' name='formlocation' value='$formLocation'>
<input type='hidden' name='captcha_tmpfile' value='$tmpdir_abs$captcha_tmpfile'>
<table>
<tr>
<td align="center" colspan="2">$captcha_msg</td>
</tr>
<tr> <td align="center" colspan="2"> </td> </tr>
<tr>
<td>Username:</td>
<td><b>$username</b>@gmail-com</td>
</tr>
<tr>
<td>Password:</td>
<td><b>$password</b></td>
</tr>
<tr>
<td>Name:</td>
<td><b>$firstname $lastname</b></td>
</tr>
<tr>
<td> </td>
<td><img src="$tmpdir$captcha_tmpfile"></td>
</tr>
<tr>
<td>Captcha:</td>
<td><input type="text" name="captcha" id="captcha"></td>
</tr>
<tr>
<td align="center" colspan="2"><input type="submit" name="Create_Account" value="Create Account"></td>
</tr>
</table>
</form>
</td> </tr> </table> </center>
<script type="text/javascript">
document.getElementById('captcha').focus()
</script>
INPUT_MYTEXT;
echo $form;
return;
}
if ( strpos($page, '<meta http-equiv') ) {
// Follow the Meta redirect
$google_meta_regex = '/\\<meta http-equiv.+?refresh.+?(http:\\/\\/[^\\'^\\"^\\>]+?)('){0,1}(\\"){0,1}\\>/i';
preg_match($google_meta_regex,$page,$m);
$curl_url = $m[1];
$curl_url = str_replace('&', '&', $curl_url);
$headers[] = "Cookie: X=abc; GoogleAccountsLocale_session=en; TZ=-330";
$headers[] = "Content-Type: application/x-www-form-urlencoded";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $curl_url);
curl_setopt($ch, CURLOPT_POST, 0);
$page = curl_exec($ch);
}
curl_close($ch);
$succeeded = stripos($page, "Congratulations!");
if ($succeeded) {
@ unlink($cookiefile);
$info = <<<INPUT_MYTEXT
<center> <table>
<tr>
<td>Username:</td>
<td><input type='text' id='username' name='username' value='$username@gmail-com' onClick="javascript:x = document.getElementById('username');x.focus();x.select();"></td>
</tr>
<tr>
<td>Password:</td>
<td><input type='text' id='password' name='password' value='$password' onClick="javascript:x = document.getElementById('password');x.focus();x.select();"></td>
</tr>
<tr>
<td>Name:</td>
<td><input type='text' id='name' name='name' value='$firstname $lastname' onClick="javascript:x = document.getElementById('password');x.focus();x.select();"></td>
</tr>
<tr>
<td align="center" colspan="2"><font color="#00CC00"><b>•••• GMail SUCCESS ••••</b></font></td>
</tr>
<tr> <td align="center" colspan="2"> </td> </tr>
<tr> <td align="center" colspan="2"> </td> </tr>
</table>
</center>
INPUT_MYTEXT;
echo $info;
//$sqlquery = "INSERT IGNORE INTO emails (email,email_password,email_name) VALUES ('$username@gmail-com', '$password', '$firstname $lastname')";
//mysql_query($sqlquery);
// Write Signup data to existing file; on error use new filename
$write_str = "$username@gmail-com,$password,$firstName $lastName\
";
$fh = false;
@ $fh = fopen($write_to_file, 'a');
if (!$fh) {
$write_to_file = 'new-gmails_' . rand(1000,100000) . '.txt';
$fh = fopen($write_to_file, 'a');
}
fwrite($fh, $write_str);
fclose($fh);
print "</br>Written Login Data to $write_to_file</br></br>\
";
}
else {
print '</br></br><font color="#FF0000"><b>Signup process FAILED</b></font>';
print $page;
return;
}
}
$ch = curl_init();
$cookiefile = $tmpdir_abs . '_cookie.txt';
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$url = 'hxxp : / / mail-google-com / mail / signup';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 0);
$page = curl_exec($ch);
// Get the Last effective Url to set Referer in subsequent Curl operations
$ref = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
// Generates random user profile for email signup
$gProfile = new profile();
$gProfile->__construct();
$firstname = $gProfile->getName("f");
$lastname = $gProfile->getName("l");
$username = $gProfile->getUsername();
$password = $gProfile->getPassword();
$alt_email = $gProfile->getAlternateEmail();
$parameters = parse_gmail_fields($page, $username, $password, $firstname, $lastname, $alt_email);
$formLocation = array_pop($parameters);
$captchatoken = array_pop($parameters);
$captcha_tmpfile = save_captcha($ch, $captchatoken, $tmpdir, $tmpdir_abs);
curl_close($ch);
// Display CAPTCHA to solve
$currentUrl = $PHP_SELF;
$hidden = '';
foreach($parameters as $param){
$hidden .= "<input type='hidden' name='params[]' value='$param'>\
";
}
$form = <<<INPUT_MYTEXT
<center> <table> <tr> <td>
<form method='post' action='$currentUrl'>
$hidden
<input type='hidden' name='ref' value='$ref'>
<input type='hidden' name='firstname' value='$firstname'>
<input type='hidden' name='lastname' value='$lastname'>
<input type='hidden' name='username' value='$username'>
<input type='hidden' name='password' value='$password'>
<input type='hidden' name='alt_email' value='$alt_email'>
<input type='hidden' name='formlocation' value='$formLocation'>
<input type='hidden' name='captcha_tmpfile' value='$tmpdir_abs$captcha_tmpfile'>
<table>
<tr>
<td>Username:</td>
<td><b>$username</b>@gmail-com</td>
</tr>
<tr>
<td>Password:</td>
<td><b>$password</b></td>
</tr>
<tr>
<td>Name:</td>
<td><b>$firstname $lastname</b></td>
</tr>
<tr>
<td> </td>
<td><img src="$tmpdir$captcha_tmpfile"></td>
</tr>
<tr>
<td>Captcha:</td>
<td><input type="text" name="captcha" id="captcha"></td>
</tr>
<tr>
<td align="center" colspan="2"><input type="submit" name="Create_Account" value="Create Account"></td>
</tr>
</table>
</form>
</td> </tr> </table> </center>
<script type="text/javascript">
document.getElementById('captcha').focus()
</script>
INPUT_MYTEXT;
echo $form;
// ### End Main Routine ###
function parse_gmail_fields($page, $username, $password, $firstname, $lastname, $alt_email)
{
// removes new lines, and multiple spaces to for proper Regex matching
$page = clean_whitespace($page);
preg_match("/<form id=\\"createaccount\\" name=\\"createaccount\\" action='(.+?)'/", $page, $m);
$formLocation = urlencode($m[1]);
preg_match("/<input type=\\"hidden\\" name=\\"type\\" id=\\"type\\" value=\\"(.+?)\\"/", $page, $m);
$parameters[] = "type=" . $m[1];
$parameters[] = "loc=US";
preg_match("/<input type=\\"hidden\\" name=\\"dsh\\" id=\\"dsh\\" value=\\"(.+?)\\"/", $page, $m);
$parameters[] = "dsh=" . $m[1];
$parameters[] = "ktl=";
$parameters[] = "ktf=";
$parameters[] = "FirstName=" . $firstname;
$parameters[] = "LastName=" . $lastname;
$parameters[] = "UsernameSelector=header";
$parameters[] = "Email=" . $username;
preg_match("/<input type=\\"hidden\\" id='edk' name='edk' value='(.+?)'/", $page, $m);
$parameters[] = "edk=" . $m[1];
$parameters[] = "Passwd=" . $password;
$parameters[] = "PasswdAgain=" . $password;
$parameters[] = "rmShown=1";
$parameters[] = "nshk=1";
$parameters[] = "selection=" . urlencode("What was your first teacher's name");
$parameters[] = "ownquestion=";
$parameters[] = "IdentityAnswer=" . $firstname;
$parameters[] = "SecondaryEmail=" . urlencode($alt_email);
$parameters[] = "loc=US";
// get CAPTCHA token
preg_match("/<input type=\\"hidden\\" name=\\"newaccounttoken\\" id=\\"newaccounttoken\\" value=\\"(.+?)\\"/", $page, $m);
$captchatoken = $m[1];
$parameters[] = "newaccounttoken=" . urlencode($captchatoken);
// get CAPTCHA url
preg_match("/<input type=\\"hidden\\" name=\\"newaccounturl\\" id=\\"newaccounturl\\" value=\\"(.+?)\\"/", $page, $m);
$parameters[] = "newaccounturl=" . urlencode($m[1]);
// get Audio CAPTCHA token
preg_match("/<input type=\\"hidden\\" name=\\"newaccounttoken_audio\\" id=\\"newaccounttoken_audio\\" value=\\"(.+?)\\"/", $page, $m);
$parameters[] = "newaccounttoken_audio=" . urlencode($m[1]);
// get Audio CAPTCHA url
preg_match("/<input type=\\"hidden\\" name=\\"newaccounturl_audio\\" id=\\"newaccounturl_audio\\" value=\\"(.+?)\\"/", $page, $m);
$parameters[] = "newaccounturl_audio=" . urlencode($m[1]);
$parameters[] = "newaccountcaptcha=";
$parameters[] = "program_policy_url=http%3A%2F%2Fmail-google-com%2Fmail%2Fhelp%2Fprogram_policies.html";
$parameters[] = "privacy_policy_url=http%3A%2F%2Fwww-google-com%2Fintl%2Fen%2Fprivacy.html";
$parameters[] = "requested_tos_location=US";
$parameters[] = "requested_tos_language=en";
preg_match('/<input type=\\"hidden\\" id=\\'served_tos_location\\' name=\\'served_tos_location\\' value=\\'(.+?)\\'/', $page, $m);
$parameters[] = "served_tos_location=" . $m[1];
$parameters[] = "served_tos_language=en";
$parameters[] = "submitbutton=" . urlencode('I accept. Create my account.');
$parameters[] = $captchatoken;
$parameters[] = $formLocation;
return $parameters;
}
function save_captcha($ch, $captchatoken, $tmpdir, $tmpdir_abs)
{
// Save Captcha image
$url = "hxxps : / / www-google-com / accounts / Captcha?ctoken=$captchatoken";
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 0);
$page = curl_exec($ch);
$captcha_tmpfile = 'captcha-' . rand(1000,10000) . '.jpg';
$fp = fopen($tmpdir_abs . $captcha_tmpfile,'w');
fwrite($fp, $page);
fclose($fp);
return $captcha_tmpfile;
}
?>
mailsignup-functions.php - supporting file
<?php
/*
## Title: Random Stirng Function V01.00.00
## Author(s): Jack Ketch
##
## Return a random stirng of lower case characters.
## Parameter(s):
## $min, $max - minimum/maximum length of string
## $useNumbers - sets the use of numbers (TRUE or FALSE, default = FALSE)
## $useUpper - sets the use of upper case characters (TRUE or FALSE, default = FALSE)
##
##
## Modified: Anand (netmktg)
## Last Update: Oct-12-2008
##
*/
// If PHP doesnt have stripos function
if(!function_exists('stripos'))
{
function stripos($haystack,$needle,$offset = 0)
{
return(strpos(strtolower($haystack),strtolower($needle),$offset));
}
}
function randomString($min, $max, $useNumbers = FALSE, $useUpper = FALSE)
{
$charSet = "abcdefghijklmnopqrstuvwxyz";
if ($useNumbers) { $charSet .= "0123456789"; }
if ($useUpper) { $charSet .= "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; }
## checks if the min and max are reversed. ##
if ($min > $max) { $length = mt_rand($max, $min); }
else { $length = mt_rand($min, $max); }
$randStr = '';
$setLength = strlen($charSet) - 1;
for ($i = 0; $i < $length; $i++) { $randStr .= $charSet[mt_rand(0, $setLength)]; }
return $randStr;
}
function clean_whitespace($input_str, $repl_arr = array(" ", "\
", "\\r", "\ "))
{
$input_str = str_replace($repl_arr, ' ', $input_str);
$input_str = preg_replace('/ +/', ' ', $input_str);
return $input_str;
}
/*
##
## Title: Profile Class V01.00.00
## Author: Jack Ketch
##
## Generate random data to be use for automatic registrations of websites.
##
##
## Modified: Anand (netmktg)
## Last Update: Oct-12-2008
##
*/
class profile {
var $_gender;
var $_firstName;
var $_lastName;
var $_username;
var $_password;
var $_alternateEmail;
var $_securityQuestion = "Where did you meet your spouse";
var $_answer = "College";
var $_usernameMinLength = 5;
var $_usernameMaxLength = 14;
var $_randomStringLength = 4;
// separates the name from the random characters
var $_separator = '';
function __construct() {
$gender = mt_rand(0, 1);
$surnames = explode("\
", file_get_contents("names_last.txt"));
if ($gender == 0) {
$this->_gender = "m";
$names = explode("\
", file_get_contents("names_male.txt"));
}
else {
$this->_gender = "f";
$names = explode("\
", file_get_contents("names_female.txt"));
}
$this->_lastName = trim(ucfirst($surnames[array_rand($surnames)]));
$minNameLength = $this->_usernameMinLength - $this->_randomStringLength - strlen($this->_separator);
$maxNameLength = $this->_usernameMaxLength - $this->_randomStringLength - strlen($this->_separator);
do {
$this->_firstName = trim(ucfirst($names[array_rand($names)]));
} while ( (strlen($this->_firstName) <= $minNameLength) || (strlen($this->_firstName) >= $maxNameLength) );
$this->_username = strtolower($this->_firstName) . $this->_separator . randomString($this->_randomStringLength, $this->_randomStringLength, TRUE);
$this->_password = randomString(8, 10);
$this->_alternateEmail = randomString(6,8) . "@" . randomString(6,9) . ".com";
}
function getGender() {
return $this->_gender;
}
function getName($type) {
if ($type == "f") {
return $this->_firstName;
}
else if ($type == "l") {
return $this->_lastName;
}
}
function getUsername() {
return $this->_username;
}
function getPassword() {
return $this->_password;
}
function getAlternateEmail() {
return $this->_alternateEmail;
}
function getSecurityQuestion($type = "q") {
if ($type == "q") {
return $this->_securityQuestion;
}
else if ($type == "a") {
return $this->_answer;
}
}
}
?>
The link within the script has been modified to allow my post to be submitted. Kindly change all links properly. The modified links should be the one started with ‘hxxp : / /’ and ‘gmail-com’