资讯专栏INFORMATION COLUMN

Windows系统中Python实现每日定时自动登录签到

willin / 2573人阅读

摘要:之前说要每周写的。。问题描述在每天比如点到点之间定时自动登陆网站,签到实现思路使用抓包工具先登陆一遍,把请求的地址,等信息都拿到。可以生成一个按键小精灵的,用计划任务定时执行。主要目的是找到每个发送请求的和信息。

之前说要每周写的。。然后最近忙着毕业就一直没动。>.<感觉月更都困难了。

问题描述

在每天比如10点到11点之间定时自动登陆网站,签到

实现思路

使用fiddler抓包工具先登陆一遍,把请求的地址,header等信息都拿到。

使用python写一个脚本,模拟浏览器向服务器发送登陆,签到请求

使用批处理bat来写几句话,随机在一小时内运行python脚本

使用Windows自带的计划任务,定时每日10点运行bat脚本

另外,之前不想那么麻烦写代码,还去找了一个叫做按键精灵的软件来模拟执行。不过那个软件是模拟鼠标和键盘,所以执行的时候会有界面出现,而且你的鼠标和键盘不能动,所以后来放弃了。如果觉得这个麻烦也可以试试那个。可以生成一个按键小精灵的exe,用计划任务定时执行。这个软件也很邪教啊,还可以自动截图。

实现过程 一、fiddler抓包

这个直接下载然后上手做就可以了,打开工具,然后进行正常的登陆,每一个请求的过程都有。主要目的是找到每个发送请求的url和header信息。
比如我练习网站的登陆请求发送的url是http://XXX.com/Home/Login/log...。

这个具体的url也可以用谷歌浏览器chrome进入审查元素去选取按钮,简陋一些的网站可以看到js代码是怎么跳转过去的。如果遇到一些按钮点击一次以后无法再点,可以用这个办法找它的url。

二、python写请求脚本

这里用这里用python3写的,这部分总结晚点写:P

import urllib.request  
import urllib  
import gzip  
import http.cookiejar  
import time
  
# generate request header, deal with cookie  
def getOpener(head):  
    # deal with the Cookies  
    cj = http.cookiejar.CookieJar()
    pro = urllib.request.HTTPCookieProcessor(cj)  
    opener = urllib.request.build_opener(pro)  
    header = []  
    for key, value in head.items():  
        elem = (key, value)  
        header.append(elem)  
    opener.addheaders = header  
    return opener  
  
#encapsulate the header as the browser
header = {  
    "Connection": "Keep-Alive",  
    "Accept-Language": "zh-CN",  
    "Accept": "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*",  
    "User-Agent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)",  
    "Accept-Encoding": "gzip, deflate",  
    "X-Requested-With": "XMLHttpRequest",  
    "Host": "http://XXX.com/",  
}  


url = "http://XXX.com/Home/Login/login_submit"  
opener = getOpener(header)  
  
id = "xxxx"#你的用户名  
password = "fddafda"#你的密码,抓包是什么就输什么,有时候是md5加密的
postDict = {  
        "logname": id,  
        "passwd": password,  
}  
#这里的post数据的json可以检查fiddler的webform里会有。

postData = urllib.parse.urlencode(postDict).encode()  
op = opener.open(url, postData)  
data = op.read()  
print(data)

#签到
url = "http://XXX.com/index/index/sign/P/in"
op = opener.open(url)
data = op.read()
print(data)

三、bat调用python脚本
@echo off
rem 这里就是先用cd命令转到.py文件所在的地址
C:
cd C:Windows

rem 用random生成一个数字对3600秒取余得到一个一小时内的随机秒数存在rd中
set /a rd=%random%%%3600
rem ping用于等待若干秒
ping -n %rd% 127.0.0.1 > nul 
python test.py

rem 生成日志
set  today=%date:~0,4%-%date:~5,2%-%date:~8,2%
echo login at %today%_%time:~0,2%:%time:~3,2%  >> E:LogFilelog%today%.txt
exit

rem是注释可以删,python里面还有一个pythonw.exe调用这个可以完全不出现界面。如果命令行cmd里面没有python,去环境变量path里面加一下python所在的地址。

总结

实现这个小任务,让我发现python的功能确实很大,而且可以用的库也非常多。这里主要是在廖雪峰的python教程中查看的python基本的东西。然后搜了一个例子。模仿着做的。

另外,对前端的启发也蛮大的。防止这些爬虫去解析前端的信息,主要可以有以下措施:

对所有发布的网站中JS进行压缩混淆加密

一些关键数据可以用图片展示,增加一点爬取难度

登陆设置验证码和动态token

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44434.html

相关文章

  • QQBot:基于SmartQQ协议的QQ机器人的简单使用

    摘要:一介绍是一个用实现的基于腾讯协议的简单机器人,可运行在和平台下,所有代码集成在一个文件中。三使用方法启动在命令行输入,或直接运行。操作机器人启动后,用另外一个向本发送消息即可操作。 一、介绍 QQBot 是一个用 python 实现的、基于腾讯 SmartQQ 协议的简单 QQ 机器人,可运行在 Linux 和 Windows 平台下,所有代码集成在一个 qqbot.py 文件中。 Q...

    RyanQ 评论0 收藏0
  • 大话后端开发的奇淫技巧大集合

    摘要:,大家好,很荣幸有这个机会可以通过写博文的方式,把这些年在后端开发过程中总结沉淀下来的经验和设计思路分享出来模块化设计根据业务场景,将业务抽离成独立模块,对外通过接口提供服务,减少系统复杂度和耦合度,实现可复用,易维护,易拓展项目中实践例子 Hi,大家好,很荣幸有这个机会可以通过写博文的方式,把这些年在后端开发过程中总结沉淀下来的经验和设计思路分享出来 模块化设计 根据业务场景,将业务...

    CloudwiseAPM 评论0 收藏0
  • 粉丝推荐的 3 个 GitHub 项目

    摘要:今天分享三个读者推荐的项目。污点行为包括但不限于毁意向书毁两方协定毁三方协定试用期裁员大量裁应届生。地址欢迎关注公众号逛逛,每天推荐一个好玩有趣的开源项目。推荐阅读上有什么好玩的项目推荐个热门电商项目女朋友让我写万字检讨上个算法项目 十一假期一直在休息,好久没更新文章了。今天分享三个读...

    genedna 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<