转载:http://www.cnblogs.com/spxcds/p/5375192.html
关于这一部分, 我首先介绍下如何实现使用Python脚本实现签到功能其实,linux下有个命令叫做curl,完全可以完成模拟签到的功能.有这个想法完全是因为实验室的学长开发了一款App,上边有个起床签到,还有排名,为了能拿个首签...当然,我也只用过一次,并不想为学长开发的东西带来任何的规则上的扰乱.
言归正传
首先,因为是手机上的App, 所以,我们需要抓包看下它具体的URL以及发送的内容是什么,关于这部分内容我就不在赘述了,我实现的功能主要有模拟发布状态和模拟签到两种功能,两个的URL也是不同的.如何在特定的时间段内签到呢? 我们可以随机出一个0-900的数t,然后sleep(t), 比如说我在5.00的时候执行这个脚本,那么我就会在5.00-5.15之内签到了.
另外, 我如何查看我的脚本是否执行成功了呢?或者说是我的脚本执行结果是什么?所以我打印了一下签到后返回的requests.text,但是重定向的时候发现有错误,一查原来是编码的问题,他返回的是ASCII编码的,但是其中含有中文字符,所以需要把他编码成utf-8的形式就可以成功显示了.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# coding=utf-8
import
requests
import
random
import
time
topic_url
=
"http://XXXX.XXXX.com/XXXX/XXXX/XXXX/XXXX"
sign_url
=
"http://XXX.XXXXX.com/xxx/xxxx/xxxx/"
content
=
"你想说的内容"
headers
=
{
"AUTHORIZATION"
:
"TOKEN xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
,
"Host"
:
"XXX.XXXXX.com"
,
"Connection"
:
"Keep-Alive"
,
"Accept-Encoding"
:
"gzip"
,
"Content-Type"
:
"application/x-www-form-urlencoded; charset=UTF-8"
,
"User-Agent"
:
"okhttp/3.2.0"
}
def
topic():
requests.post(topic_url,data
=
{
"content"
: content},
headers
=
headers)
def
sign():
r
=
requests.post(sign_url, data
=
{
"rise_rank"
:
"1"
},
headers
=
headers)
print
r.text.encode(
'UTF-8'
)
t
=
random.randrange(
0
,
900
)
print
t
time.sleep(t)
for
i
in
range
(
0
,
20
):
sign()
time.sleep(
1
)
|
好了,我们已经写完了脚本,那么我们如何让他在早上的时候(比如说5点)自动执行呢?
Linux下有一个命令叫做crontab
首先
1
|
crontab
-e
|
编辑你的定时任务,编辑格式如下
1
2
3
|
# min hour day mon week command
# * * * * * python /home/yourdir/yourpf.py >> /home/youdir/log
0 5 * * * python
/home/yourdir/yourpf
.py >>
/home/youdir/log
|
这样写就可以了,具体的用法可以到网上去查一查
1
2
3
4
|
#列出所有的任务
crontab
-l
#删除所有的任务
crontab
-r
|
只是用来讨论技术,希望看这篇博客的人不要对他人的网站或者APP带来困扰.