python脚本根据cookies自动登录网站_Windows系统中Python实现每日定时自动登录签到...

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

问题描述

在每天比如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:\LogFile\log%today%.txt

exit

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

总结

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

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

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

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

登陆设置验证码和动态token

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值