用阿里云服务器实现贴吧自动签到
为什么
平时几乎逛贴吧,又不水贴,所以等级基本不高。发帖问问题有要一点等级撑腰。当然可以拿来装B。
以前用过两个别人提供的签到服务,都需要提供Cookie,感觉不太可靠。当然,他们提供的服务我也没用多久。
本地运行
从利用阿里云的函数计算实现百度贴吧免费定时签到复制python代码可以运行,但需要改成3一下的版本。
首先从官网下载包安装。由于我不想卸载3的版本,所以通过添加PYTHON_HOME,然后在Path里引用。这样就可以通过修改PYTHON_HOME的值就可修改成想要用的版本。但最终我没改值,而是在命令行里使用2的版本运行程序。
此时又遇到库的问题。解决方式可以下载库,理论也可把3里下的库复制过来。我想节约空间就用命令mklink /j "D:\Python275\Lib\site-packages" "D:\Python\Lib\site-packages"
进行联接(应该是软联接,不是快捷方式,需要前面的文件夹不存在)。这样就可以用3里面的库了。
总是在f处报SyntaxError: invalid syntax
,但3正常,于是换成用format的。改了之后又报编码相关的错UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2: ordinal not in range(128)
。这回添加
1 | import sys |
就好,而且在服务器上也可以运行。
1 | # -*- coding: utf-8 -*- |
服务器(LAMP环境)运行
-
编写shell。因为要添加至定时任务,所以路径要写全。shell的文件在
/opt/corn/
下面,生成的文件也在这里。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
35!/bin/bash
f_dir=$(date +%Y)
s_dir=$(date +%m)
t_dir=$(date +%d)
num=1
r_dir=/opt/cron
创建文件夹
if [ ! -d ${r_dir}/${f_dir}/${s_dir} ];then
mkdir -p ${f_dir}/${s_dir}
var1='log'${1:-${num}}+$(date +%H-%M-%S)+'执行创建'+${r_dir}/${f_dir}/${s_dir}
echo 1
else
var1='log'${1:-${num}}+$(date +%H-%M-%S)+'已存在'+${r_dir}/${f_dir}/${s_dir}
echo 2
fi
echo ${var1} >> ${r_dir}/${f_dir}/${s_dir}/${t_dir}.log
运行python代码
python /opt/cron/tieba2.py > ${r_dir}/${f_dir}/${s_dir}/${t_dir}+${1:-${num}}.txt || echo 'log'${1:-${num}}+$(date +%H-%M-%S)+'python运行失败' >> ${r_dir}/${f_dir}/${s_dir}/${t_dir}.log
echo ${f_dir}+${s_dir}+${t_dir}
为生成<li></li> 此处可把if删掉,把下面的>>换成>
tmp=${r_dir}/${f_dir}/${s_dir}/${t_dir}'tmp'.txt
if [ -f ${tmp} ];then
rm -rf ${tmp} && echo 'log'${1:-${num}}+$(date +%H-%M-%S)+'中间文件已存在-删除'+${tmp}
fi
cat ${r_dir}/${f_dir}/${s_dir}/${t_dir}+${1:-${num}}.txt | while read line;do
echo '<li>'${line}'</li>' >> ${tmp}
done
拼接html
cat /opt/cron/head.txt > /var/www/html/index.html
cat ${tmp} >> /var/www/html/index.html
cat /opt/cron/tail.txt >> /var/www/html/index.html
echo 'done'代码在跨月时,可能会出问题,可设计多运行几次。下面的代码稍微改了点,还是有问题,不改了。
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
35
36!/bin/bash
f_dir=$(date +%Y)
s_dir=$(date +%m)
t_dir=$(date +%d)
num=1
r_dir=/opt/cron
echo ${r_dir}/${f_dir}/${s_dir} > ${r_dir}/daily.log
if [ ! -d ${r_dir}/${f_dir}/${s_dir} ];then
mkdir -p ${f_dir}/${s_dir}
var1='log'${1:-${num}}+$(date +%H-%M-%S)+'执行创建'+${r_dir}/${f_dir}/${s_dir}
echo 1
else
var1='log'${1:-${num}}+$(date +%H-%M-%S)+'已存在'+${r_dir}/${f_dir}/${s_dir}
echo 2
fi
echo ${var1} >> ${r_dir}/${f_dir}/${s_dir}/${t_dir}.log
python /opt/cron/tieba2.py > ${r_dir}/${f_dir}/${s_dir}/${t_dir}+${1:-${num}}.txt || echo 'log'${1:-${num}}+$(date +%H-%M-%S)+'python运行失败' >> ${r_dir}/${f_dir}/${s_dir}/${t_dir}.log
echo ${f_dir}+${s_dir}+${t_dir}
tmp=${r_dir}/${f_dir}/${s_dir}/${t_dir}'tmp'.txt
if [ -f ${tmp} ];then
rm -rf ${tmp} && echo 'log'${1:-${num}}+$(date +%H-%M-%S)+'中间文件已存在-删除'+${tmp}
fi
cat ${r_dir}/${f_dir}/${s_dir}/${t_dir}+${1:-${num}}.txt | while read line;do
echo '<li>'${line}'</li>' >> ${tmp}
done
cat /opt/cron/head.txt > /var/www/html/index.html
echo '<li>'${f_dir}+${s_dir}+${t_dir}'<li>' >> /var/www/html/index.html
cat ${tmp} >> /var/www/html/index.html
cat /opt/cron/tail.txt >> /var/www/html/index.html
echo 'done' -
如果需要多次执行生成不同的文件,要传入数字,表示第几次执行。
-
有设计日志,出问题可看。
-
拼接的html很简单。
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
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>贴吧每日签到</title>
<style type="text/css">
body {
text-align: center
}
div {
width: auto;
}
#fdiv {
border: 1px solid #000;
margin: 0 auto;
height: 1700px;
}
</style>
<script type="text/javascrip">
</script>
</head>
<body>
<div id="fdiv">
<ol id="tb">
<!--此处分割为两个文件-->
</ol>
</div>
</body>
</html> -
如果需要网页有较多功能,比如再执行一边。可自行设计。由于我前段时间看过尚学堂杨淑娟老师-手写服务器,代码也有,所以修改修改再添加点,最后打包,就应该可以放到服务器里运行了。
-
服务器到期后可放到阿里、腾讯、百度的函数计算上。个人推荐百度的,因为有免费1G的外网流量。leancloud也可应该。