<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>签到 &#8211; ChaBug安全</title>
	<atom:link href="/tags/%E7%AD%BE%E5%88%B0/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>一个分享知识、结识伙伴、资源共享的博客</description>
	<lastBuildDate>Wed, 26 Dec 2018 00:37:04 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.5.5</generator>
	<item>
		<title>指点天下Python签到脚本</title>
		<link>/code/632.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Wed, 26 Dec 2018 00:34:04 +0000</pubDate>
				<category><![CDATA[编程学习]]></category>
		<category><![CDATA[签到]]></category>
		<guid isPermaLink="false">/?p=632</guid>

					<description><![CDATA[学校每天晚上让用一个垃圾app签到就寝，没办法，写了个脚本来解放双手。 思路 抓手机app的签到包 代码 #!/usr/bin/env python3 # -*- coding: ...]]></description>
										<content:encoded><![CDATA[<p>学校每天晚上让用一个垃圾app<span class="wpcom_tag_link"><a href="/tags/%e7%ad%be%e5%88%b0" title="签到" target="_blank">签到</a></span>就寝，没办法，写了个脚本来解放双手。</p>
<h2 id="思路">思路</h2>
<p>抓手机app的签到包</p>
<h2 id="代码">代码</h2>
<pre class="lang:default decode:true ">#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author:Y4er

import requests
import json
import hashlib

def getToken(phone,password):
	url = 'http://app.zhidiantianxia.cn/api/Login/pwd'
	headers = {
	'Host': 'app.zhidiantianxia.cn',
	'Content-Type': 'application/x-www-form-urlencoded',
	'User-Agent': 'okhttp/3.10.0'
	}
	params = {
		'phone': phone,
		'password': password,
		'mobileSystem': '8.1.0',
		'appVersion': '1.1.4',
		'mobileVersion': 'MI 6X',
		'deviceToken': '1507bfd3f7ec78ab60e'
	}
	token = requests.post(url,params=params,headers=headers).json()['data']
	return token

def qianDao(phone,token):
	url = 'http://zzrvtc.zhidiantianxia.cn/applets/signin/sign'
	headers = {
		'axy-phone': phone,
		'axy-token': token,
		'Content-Type': 'application/json',
		'user-agent': 'MI 6X(Android/8.1.0) (com.axy.zhidian/1.1.4) Weex/0.18.0 1080x2030',
		'Host': 'zzrvtc.zhidiantianxia.cn'
	}
	payload = {"lat":"34.794349","lng":"113.887287","signInId":1562}
	res = requests.post(url,headers=headers,data=json.dumps(payload)).json()['msg']
	print("手机号:{0} 签到结果:{1}".format(phone,res))

def getPhoneAndPass():
	results = []
	with open('password.txt','r',encoding='utf-8') as f:
		for line in f.readlines():
			line = line.strip('\n')
			phone = line.split('|')[0]
			password = line.split('|')[1]
			m = hashlib.md5()
			m.update(b"axy_" + bytes(password,encoding = "utf8"))
			password = m.hexdigest()
			results.append([phone,password])
		f.close()
	return results

if __name__ == '__main__':

	results = getPhoneAndPass()
	for phone,password in results:
		token = getToken(phone, password)
		qianDao(phone,token)</pre>
<p>&nbsp;</p>
<p>因为前天搞得签到需要自行获取<code>signInId</code>，这次更新了下，直接代码获取</p>
<pre class="lang:default decode:true ">#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author:Y4er

import requests
import json
import hashlib
import smtplib
from email.mime.text import MIMEText
from email.header import Header

def mailTome():
	# 第三方 SMTP 服务
	mail_host="smtp.ym.163.com"  #设置服务器
	mail_user="smtp@user.com"    #用户名
	mail_pass="smtppassword"   #口令 
	sender = 'service@chabug.org'
	receivers = ['your@qq.com']  # 接收邮件，可设置为你的QQ邮箱或者其他邮箱
	message = MIMEText('指点天下签到完毕,请自行查看结果', 'plain', 'utf-8')
	message['From'] = Header("smtp@user.com", 'utf-8')
	message['To'] =  Header("指点天下签到完毕,请自行查看结果", 'utf-8')
	subject = '指点天下签到完毕,请自行查看结果'
	message['Subject'] = Header(subject, 'utf-8')
	try:
	    smtpObj = smtplib.SMTP() 
	    smtpObj.connect(mail_host, 25)    # 25 为 SMTP 端口号
	    smtpObj.login(mail_user,mail_pass)
	    smtpObj.sendmail(sender, receivers, message.as_string())
	    print ("邮件发送成功")
	except smtplib.SMTPException:
	    print ("Error: 无法发送邮件")

def getToken(phone,password):
	url = 'http://app.zhidiantianxia.cn/api/Login/pwd'
	headers = {
	'Host': 'app.zhidiantianxia.cn',
	'Content-Type': 'application/x-www-form-urlencoded',
	'User-Agent': 'okhttp/3.10.0'
	}
	params = {
		'phone': phone,
		'password': password,
		'mobileSystem': '8.1.0',
		'appVersion': '1.1.4',
		'mobileVersion': 'MI 6X',
		'deviceToken': '1507bfd3f7ec78ab60e'
	}
	token = requests.post(url,params=params,headers=headers).json()['data']
	return token

def getsignInId(phone,token):
	url = 'http://zzrvtc.zhidiantianxia.cn/applets/signin/my'
	headers = {
		'axy-phone': phone,
		'axy-token': token,
		'user-agent': 'MI 6X(Android/8.1.0) (com.axy.zhidian/1.1.4) Weex/0.18.0 1080x2030',
		'Host': 'zzrvtc.zhidiantianxia.cn'
	}
	params = {
		'page': '0',
		'size': '10'
	}
	signInId = requests.get(url,headers=headers,params=params).json()['data']['content'][0]['id']
	return signInId

def qianDao(phone,token):
	url = 'http://zzrvtc.zhidiantianxia.cn/applets/signin/sign'
	headers = {
		'axy-phone': phone,
		'axy-token': token,
		'Content-Type': 'application/json',
		'user-agent': 'MI 6X(Android/8.1.0) (com.axy.zhidian/1.1.4) Weex/0.18.0 1080x2030',
		'Host': 'zzrvtc.zhidiantianxia.cn'
	}
	payload = {"lat":"34.794349","lng":"113.887287","signInId":getsignInId(phone,token)}
	res = requests.post(url,headers=headers,data=json.dumps(payload)).json()['msg']
	print("手机号:{0} 签到结果:{1}".format(phone,res))

def getPhoneAndPass():
	results = []
	with open('password.txt','r',encoding='utf-8') as f:
		for line in f.readlines():
			line = line.strip('\n')
			phone = line.split('|')[0]
			password = line.split('|')[1]
			m = hashlib.md5()
			m.update(b"axy_" + bytes(password,encoding = "utf8"))
			password = m.hexdigest()
			results.append([phone,password])
		f.close()
	return results

if __name__ == '__main__':
	results = getPhoneAndPass()
	for phone,password in results:
		token = getToken(phone, password)
		qianDao(phone,token)
	mailTome()</pre>
<h2>效果</h2>
<p><img loading="lazy" class="alignnone size-medium" src="https://ws1.sinaimg.cn/large/006xriynly1fyjum0oqlwj30br05v74m.jpg" width="423" height="211" /></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
