自动领取网易星球黑钻

网易星球是一个基于区块链的价值共享平台。区块链是个好东西,不蹭蹭热度怎么行。前一段时间世界杯,网易星球搞了一个竞猜赢黑钻的活动。黑钻是个人在星球活动的奖励,可以用于星球内的消费和兑换。玩法很简单,就是猜输赢。在我看来跟赌博差不多,不过不赌钱而是赌黑钻。而我也趁着手里有100多个黑钻体验了一把赌博的快感,最后终于输掉了一大半幸幸苦苦每天点点点得来的黑钻。这次活动也造成了黑钻的分配出现了不平衡,贫富差距越来越大。

前言

  • 每天打开星球真的是很麻烦啊,要是有个脚本能自动领岂不是很舒服,而且不会遗漏。
  • 好多天不写 Python 了,是时候写点东西保持一下手感了
  • 之前买的阿里云一直没用上,正好趁着这次机会练一练使用。

抓包、完成脚本

首先就是要抓包了,抓包过程就不写了,用的 Charles ,主要是抓2个接口,一个是获取黑钻情况的接口https://star.8.163.com/api/home/v2/userInfoAndCollectCoins,一个是领取接口https://star.8.163.com/api/starUserCoin/collectUserCoin。每个请求都要构造一个 headers , cookies , data。这些信息都能在 Charles 里看到。首先是第一个接口,把 cookies 里的信息换成自己的就可以了。这里有个问题是 cookies 隔一段时间会过期,需要重新登陆获取新的 cookies 。这一步目前还没有做,所以 cookies 需要过一段时间重新抓包获取。

	cookies = {
  		'mp_MA-9E66-C87EFACB60BC_hubble': 'xxx',
   		'NTES_YD_SESS': 'xxx',
    	'STAR_YD_SESS': 'xxx',
    	'_ga': 'xxx',
    	'_gat': 'xxx',
    	'STAREIG': 'xxx',
	}

	headers = {
    	'Host': 'star.8.163.com',
    	'Accept': 'application/json, text/plain, */*',
    	'X-Requested-With': 'XMLHttpRequest',
    	'Accept-Language': 'en-us',
    	'Content-Type': 'application/json;charset=UTF-8',
    	'Origin': 'https://star.8.163.com',
    	'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15G77 star_client_info_begin {hybridVersion: "1.0.0",clientVersion: "1.3.1",accountId: "f737c09d14618b486b90fa7d6c21c017c193ce0ff4284f8da24aad2833caea21"}star_client_info_end',
    	'Referer': 'https://star.8.163.com/m',
	}

	data = '{"type":0}'

	# 获取黑钻的请求
	response = requests.post('https://star.8.163.com/api/home/v2/userInfoAndCollectCoins', headers=headers, cookies=cookies, data=data)
	collectCoins = response.json()['data']['collectCoins']
	 print(collectCoins)

第二个接口,和第一个差不多

	cookies = {
   		'mp_MA-9E66-C87EFACB60BC_hubble': 'xxx',
    	'_ga': 'xxx',
    	'_gat': 'xxx',
    	'NTES_YD_SESS': 'xxx',
    	'STAR_YD_SESS': 'xxx',
    	'STAREIG': 'xxx',
	}

	headers = {
    	'Host': 'star.8.163.com',
    	'Accept': 'application/json, text/plain, */*',
    	'X-Requested-With': 'XMLHttpRequest',
    	'Accept-Language': 'en-us',
    	'Content-Type': 'application/json;charset=UTF-8',
    	'Origin': 'https://star.8.163.com',
    	'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15G77 star_client_info_begin {hybridVersion: "1.0.0",clientVersion: "1.3.1",accountId: "f737c09d14618b486b90fa7d6c21c017c193ce0ff4284f8da24aad2833caea21"}star_client_info_end',
    	'Referer': 'https://star.8.163.com/m',
 	}
	data = '{"serialNumber": \"%s\"}' % serialNumber
	response = requests.post('https://star.8.163.com/api/starUserCoin/collectUserCoin', headers=headers, cookies=cookies, data=data)
	print(response.json())

之后在第一个接口里循环遍历 collectCoins ,然后调用第二个接口就可以了。

	if len(collectCoins) == 0:
		print('当前没有黑钻可以领取');
	else:
		for collectCoinsItem in collectCoins:
			print(collectCoinsItem)	
			getCollectCoins(collectCoinsItem['serialNumber'])	

完整的脚本在这里,本地先运行测试一下脚本能不能用。

部署到阿里云

脚本已经写好了,要想实现真正的自动运行,下一步是把脚本传到云服务器上,这里以阿里云为例。登陆阿里云账号,打开管理控制台。点击云服务器ECS -> 实例,每个实例实际上就是一台服务器。如下图所示

2018-08-15-10-35-16

这里要记住公网的 IP 地址,我的电脑是 Mac ,打开命令行工具,用 ssh root@服务器地址 的方式连接服务器

ssh root@xxx

输入密码,如果忘记密码的话可以去实例里面修改密码。登陆成功之后就可以操作服务器了。如果这一步有问题的话可以查看阿里云相关文档,写的很详细。下一步是把刚才的脚本传到这台服务器上,首先在服务器上新建一个文件夹wyxq,方便之后使用。

mkdir wyxq

之后把文件复制到服务器,用的命令是 scp,可自行搜索更多用法。冒号后面跟的是刚才建的文件夹wyxq

scp 本地路径/wyxq.py root@xxx:wyxq

这样文件就复制到服务器上了,之后就是开启定时任务。用的是 crontab, 阿里云上也有相关文档
新建定时任务

crontab -e

写入信息,我这里让这个脚本每小时执行一次,注意这里 Python 路径和脚本路径都要用绝对路径 0 * * * * /usr/bin/python /root/wyxq/wyxq.py

查看定时任务

crontab -l

到这里就已经结束了,那么如何知道脚本是不是成功的在跑呢?我想到一个方法是再弄一个脚本,定时往txt文件写入信息,然后过一段时间看看是不是成功写进去了。这个流程和上面一毛一样,就不赘述了,相关的脚本在这里。

总结

通过这次实战,初步了解了阿里云的使用流程,并且实现了自动抢黑钻的功能。目前网易星球还是有体育赛事竞猜,赢了还想赢,输了想赢回来,赌博真的是碰不得!

comments powered by Disqus