Skip to content

Instantly share code, notes, and snippets.

@quericy
Created July 9, 2020 02:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save quericy/684457913de2dbcf7b8f3a7e85941b04 to your computer and use it in GitHub Desktop.
Save quericy/684457913de2dbcf7b8f3a7e85941b04 to your computer and use it in GitHub Desktop.
<?php
$cookie_name = $cookie_val = '';
$lines = [
'用户名||密码',
];
foreach ($lines as $line) {
list($username, $password) = explode('||', $line);
$username = trim($username);
$password = trim($password);
if (empty($username) || empty($password)) {
continue;
}
$suburl = "https://www.hostloc.com/member.php?mod=logging&action=login";
$loginInfo = array(
"username" => $username,
"password" => $password,
"fastloginfield" => "username",
"quickforward" => "yes",
"handlekey" => "ls",
"loginsubmit" => true
);
echo date('Y-m-d H:i:s ') . "login($username) ... " . PHP_EOL;
$login = curl_post($suburl, $loginInfo);
if (strpos($login, $username) !== FALSE) {
preg_match("/>用户组: (.*?)<\/a>/", $login, $preg);
$group = $preg[1];
echo date('Y-m-d H:i:s ') . "Success!($group)\n";
} else {
echo date('Y-m-d H:i:s ') . "Failed!\n\n";
continue;
}
extract(get_jf());
echo date('Y-m-d H:i:s ') . "Credit: $credit; Money: $money\n";
echo date('Y-m-d H:i:s ') . "Visting user space ";
for ($i = 0; $i < 20; $i++) {
$uid = rand(0, 30000);
curl_get($spaceUrl = "https://www.hostloc.com/space-uid-{$uid}.html");
echo ".";
}
echo date('Y-m-d H:i:s ') . " done!\n";
extract(get_jf());
echo date('Y-m-d H:i:s ') . "Credit: $credit; Money: $money\n\n";
}
function get_jf()
{
$data = array();
$html = curl_get('https://www.hostloc.com/home.php?mod=spacecp&ac=credit&op=base');
preg_match("/积分: (\d+)<\/a>/", $html, $preg);
if (!empty($preg[1])) {
$data['credit'] = $preg[1];
} else {
$data['credit'] = 0;
}
preg_match("/金钱: <\/em>(\d+)/", $html, $preg);
if (!empty($preg[1])) {
$data['money'] = $preg[1];
} else {
$data['money'] = 0;
}
return $data;
}
function curl_post($url, $post_data)
{
global $cookie_name, $cookie_val;
while (true) {
$res = do_curl_post($url, $post_data, $cookie_name, $cookie_val);
preg_match("/cookie=\"(\w*?)\=(\w*)/", $res, $preg_cookie);
preg_match("/href=\"(.*?)\"/", $res, $preg_url);
if (!empty($preg_cookie[1])) {
echo date('Y-m-d H:i:s ') . "触发防D" . PHP_EOL;
echo date('Y-m-d H:i:s ') . "重定向中:" . $preg_url[1] . PHP_EOL;
$post_cookie_name = $preg_cookie[1];
$post_cookie_val = $preg_cookie[2];
if (empty($post_cookie_val)) {
preg_match("/(\w{32}).*(\w{32}).*(\w{32})/", $res, $aes_param);
$post_cookie_val = curl_get('https://donjs.herokuapp.com/aes/' . $aes_param[1] . '/' . $aes_param[2] . '/' . $aes_param[3]);
echo date('Y-m-d H:i:s ') . "解析AES:" . $post_cookie_val . PHP_EOL;
}
$cookie_name = $post_cookie_name;
$cookie_val = $post_cookie_val;
$res = do_curl_post($preg_url[1], $post_data);
} else {
break;
}
sleep(rand(4, 7));
}
return $res;
}
function do_curl_post($url, $post_data)
{
global $cookie_name, $cookie_val;
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/hostloc.cookie');
//curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:'.rand_ip()));
//curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible;Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 600);
curl_setopt($ch, CURLOPT_REFERER, 'https://www.hostloc.com/');
if (!empty($cookie_name)) {
echo date('Y-m-d H:i:s ') . "请求带cookie:" . "$cookie_name=$cookie_val;" . PHP_EOL;
curl_setopt($ch, CURLOPT_COOKIE, "$cookie_name=$cookie_val;");
}
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
function curl_get($url)
{
global $cookie_name, $cookie_val;
sleep(rand(4, 7));
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/hostloc.cookie');
//curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:'.rand_ip()));
#curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible;Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 600);
curl_setopt($ch, CURLOPT_REFERER, 'https://www.hostloc.com/');
if (!empty($cookie_name)) {
curl_setopt($ch, CURLOPT_COOKIE, "$cookie_name=$cookie_val;");
}
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
function rand_ip()
{
return rand(1, 255) . '.' . rand(1, 255) . '.' . rand(1, 255) . '.' . rand(1, 255);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment