如何刷应用商店排名0+

9,118 views / 2013.07.01 / 9:09 下午

目前应用商店可谓五花八门,比较简单的是直接把官方商店的应用信息都抓过来,赚个展现的广告费,如gao7.com; 略复杂的是内容全部开发者自提,相当于重新做了个应用商店,可以和官方抗衡,如91.com; 再复杂些的就是结合前面两点的内容,既有开发者的提交,也有自动从官方的抓取,如同步推和25pp.  杜工将以25pp为例,从技术层面介绍刷应用排名的详细的方法。

知识储备:

1. tcp通讯的基本方式

2.抓包工具的使用 ,杜工喜欢的是fiddler.(http://fiddler2.com/)

3.家用路由器基本配置

4.php基础

原理:

利用路由器重拨功能变换ip,然后用php工具模拟手机助手向服务器发送下载数据,以达到目的。

Step 1:

打开手机应用PP助手,找到要刷的应用,开始抓包,然后点下载,停止抓包。在抓包工具中找到下载过程中进行的网络通讯,将post的内容予以保存. 此时注意,post的内容是一堆乱码,不要复制保存,而要使用16进制模式的”save to selected”功能, 我们将其保存为hex文件. 并记录header头信息:

 
1

图1 找到下载的tcp连接

 

2

图2 保存post的boday信息到文件

 

记录header头信息:

POST <a href="http://mobileup.25pp.com/index.php:80">http://mobileup.25pp.com/index.php:80</a> HTTP/1.1
Host: mobileup.25pp.com
Connection: keep-alive
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Cookie: pgv_pvi=4947xxxxx; Hm_lvt_80c7667d40c35eec40368ef5cd6547d4=1372384421; __utma=113739972.1739925924.1372384420.1372384420.1372384420.1; __utmz=113739972.1372384420.1.1.utmcsr=baidu|utmccn=(organic)|utmcmd=organic|utmctr=%E7%BE%8E%E8%85%BF%E9%89%B4%E8%B5%8F
Accept-Language: zh-cn
Accept: */*
Content-Length: 63
Connection: keep-alive
User-Agent: 25pp/0.990 CFNetwork/609.1.4 Darwin/13.0.0

Step 2:

用电脑登陆到路由器管理后台,查看断开连接和开始连接的页面,并记录header头信息。我家的比较简单,直接post不同变量到同一个链接地址,就可以实现路由器重拨,以达到换ip功能。该过程具体不在详述,一会儿在php文件中体现。

 

Step 3:

开始编码:

 

<?php
 
//开始模拟下载过程
$host = "mobileup.25pp.com";
$path = "index.php:80";
$port = 80;
$content = file_get_contents("hex");
 
$data = "POST /" . $path . " HTTP/1.1\r\n";
$data .= "Connection: keep-alive\r\n" . "Accept-Encoding: gzip, deflate\r\n" . "Content-Type: application/x-www-form-urlencoded\r\n" . "Cookie: pgv_pvi=4947xxxxx; Hm_lvt_80c7667d40c35eec40368ef5cd6547d4=1372384421; __utma=113739972.1739925924.1372384420.1372384420.1372384420.1; __utmz=113739972.1372384420.1.1.utmcsr=baidu|utmccn=(organic)|utmcmd=organic|utmctr=%E7%BE%8E%E8%85%BF%E9%89%B4%E8%B5%8F\r\nAccept-Language: zh-cn\r\n" . "Accept: */*\r\n" . "Content-Length: 63\r\n" . "Connection: keep-alive\r\n" . "User-Agent: 25pp/0.990 CFNetwork/609.1.4 Darwin/13.0.0\r\n";
 
$data .= "\r\n";
$data .= $content . "\r\n\r\n";
//刷1000次不过分吧?
while ($j < 1000) {
	$j++;
	for($i = 0;$i < 21;$i++) {
		$ock = fsockopen($host, $port);
		if (!$ock) {
			echo 'No response from ' . $host . "\n";; 
			// die;
		} 
		fwrite($ock, $data);
		while (!feof($ock)) {
			echo fgets($ock, 1024);
		} 
		sleep(1);
		echo $j . "\t" . $i . "\n";
	} 
	reconnect();
       //路由器更换ip需要一定的时间,视情况而定。
	sleep(15 * 60);
} 
function curl($url, $ifpost = 0, $datafields = '', $cookiefile = '') {
       //这个地方要注意了,是路由器的认证登陆信息,抓包的时候应该会有所体现。
	$header = array("Authorization: Basic XXXXXXXXXX=");
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
	$ifpost && curl_setopt($ch, CURLOPT_POST, $ifpost);
	$ifpost && curl_setopt($ch, CURLOPT_POSTFIELDS, $datafields);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
	$cookiefile && curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
	$cookiefile && curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);
	$r = curl_exec($ch);
	curl_close($ch);
	return $r;
} 
function reconnect() {
	// 断开
	$t1 = curl("http://192.168.1.1/RST_conn_status.htm");
	preg_match("/timestamp=([0-9]+)/", preg_replace("/[\n]/", "", $t1), $m);
	curl("http://192.168.1.1/apply.cgi?/RST_conn_status.htm%20timestamp=" . $m[1], 1, "submit_flag=connect_status&endis_connect=0");
	sleep(10); 
	// 连接
	$t1 = curl("http://192.168.1.1/RST_conn_status.htm");
	preg_match("/timestamp=([0-9]+)/", preg_replace("/[\n]/", "", $t1), $m);
	curl("http://192.168.1.1/apply.cgi?/RST_conn_status.htm%20timestamp=" . $m[1], 1, "submit_flag=connect_status&endis_connect=3");
	sleep(20);
}

 

好了,编码完成。到 cmd中运行下看看效果吧。

Categories: 感悟 Tags: