Python爬虫实现自动登录、签到功能的代码


Posted in Python onAugust 20, 2020

        更新 2016/8/9:最近发现目标网站已经屏蔽了这个登录签到的接口(PS:不过我还是用这个方式赚到了将近一万点积分·····)

       前几天女朋友跟我说,她在一个素材网站上下载东西,积分总是不够用,积分是怎么来的呢,是每天登录网站签到获得的,当然也能购买,她不想去买,因为偶尔才会用一次,但是每到用的时候就发现积分不够,又记不得每天去签到,所以就有了这个纠结的事情。怎么办呢,想办法呗,于是我就用python写了个小爬虫,每天去自动帮她签到挣积分。废话不多说,下面就讲讲代码。

       我这里用的是python3.4,使用python2.x的朋友如果有需要请绕道查看别的文章。

       工具:Fiddler

       首先下载安装Fiddler,这个工具是用来监听网络请求,有助于你分析请求链接和参数。

       打开目标网站:http://www.17sucai.com/,然后点击登录

Python爬虫实现自动登录、签到功能的代码

       好了,先别急着登录,打开你的Fiddler,此时Fiddler里面是没有监听到网络请求的,然后回到页面,输入邮箱和密码,点击登录,下面再到fiddler里面去看

Python爬虫实现自动登录、签到功能的代码

    这里面的第一个请求就是你点击登录的网络请求,点击这个链接可以在右边看到你的一些请求信息

Python爬虫实现自动登录、签到功能的代码

然后点击WebForms可以看到你的请求参数,也就是用户名和密码

Python爬虫实现自动登录、签到功能的代码

Python爬虫实现自动登录、签到功能的代码

下面我们有代码来实现登录功能

import urllib.request
import urllib
import gzip
import http.cookiejar
 
#定义一个方法用于生成请求头信息,处理cookie
def getOpener(head):
 # deal with the Cookies
 <pre name="code" class="python"> 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
 
#定义一个方法来解压返回信息
def ungzip(data):
 try:  # 尝试解压
  print('正在解压.....')
  data = gzip.decompress(data)
  print('解压完毕!')
 except:
  print('未经压缩, 无需解压')
 return data
 
#封装头信息,伪装成浏览器
header = {
 'Connection': 'Keep-Alive',
 'Accept-Language': 'zh-CN,zh;q=0.8',
 'Accept': 'application/json, text/javascript, */*; q=0.01',
 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
 'Accept-Encoding': 'gzip, deflate',
 'X-Requested-With': 'XMLHttpRequest',
 'Host': 'www.17sucai.com',
}
 
 
url = 'http://www.17sucai.com/auth'
opener = getOpener(header)
 
id = 'xxxxxxxxxxxxx'#你的用户名
password = 'xxxxxxx'#你的密码
postDict = {
  'email': id,
  'password': password,
}
 
postData = urllib.parse.urlencode(postDict).encode()
op = opener.open(url, postData)
data = op.read()
data = ungzip(data)
 
print(data)

好了,接下来清空一下你的Fiddler,然后运行这个程序,看一下你的Fiddler

Python爬虫实现自动登录、签到功能的代码

你可以点击这个链接,看看右边的请求信息和你用浏览器请求的是不是一样

下面是程序后代打印的信息

Python爬虫实现自动登录、签到功能的代码

code=200表示登陆成功

解析来就需要获取到签到的url,这里你需要一个没有签到的账号在网站中点击签到按钮,然后通过Fiddler来获取到签到的链接和需要的信息。

Python爬虫实现自动登录、签到功能的代码

然后点击“签到”,签到成功后到Fiddler中查看捕捉到的url

Python爬虫实现自动登录、签到功能的代码

点击这个url可以在右边查看访问这个链接时所需要的头信息和cookies神马的,我们已经登录成功后直接使用cookies就行了,python对cookies的处理做好了封装,下面是我的代码中对cookies的使用

cj = http.cookiejar.CookieJar()
 pro = urllib.request.HTTPCookieProcessor(cj)
 opener = urllib.request.build_opener(pro)

下面是签到成功返回的信息:code=200表示请求成功,day=1表示连续签到一天,score=20表示获得的积分数

Python爬虫实现自动登录、签到功能的代码

下面放出完整代码,当然,为了测试代码签到,你还需要你一没有签到过的账号

import urllib.request
import urllib
import gzip
import http.cookiejar
 
 
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
 
def ungzip(data):
 try:  # 尝试解压
  print('正在解压.....')
  data = gzip.decompress(data)
  print('解压完毕!')
 except:
  print('未经压缩, 无需解压')
 return data
 
 
header = {
 'Connection': 'Keep-Alive',
 'Accept-Language': 'zh-CN,zh;q=0.8',
 'Accept': 'application/json, text/javascript, */*; q=0.01',
 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
 'Accept-Encoding': 'gzip, deflate',
 'X-Requested-With': 'XMLHttpRequest',
 'Host': 'www.17sucai.com',
}
 
 
url = 'http://www.17sucai.com/auth'
opener = getOpener(header)
 
id = 'xxxxxxx'
password = 'xxxxxxx'
postDict = {
  'email': id,
  'password': password,
}
 
postData = urllib.parse.urlencode(postDict).encode()
op = opener.open(url, postData)
data = op.read()
data = ungzip(data)
 
print(data)
 
 
url = 'http://www.17sucai.com/member/signin' #签到的地址
 
op = opener.open(url)
 
data = op.read()
data = ungzip(data)
 
print(data)

相比登录,签到也就是在登录完成后重新打开一个链接而已,由于我的账号都已经签到过了,这里就不在贴运行代码的图 了。

接下来要做的就是在你电脑上写个bat 脚本,再在“任务计划”中添加一个定时任务就行了。

Python爬虫实现自动登录、签到功能的代码

在此之前你还需要配置一下python的环境变量,这里就不在赘述了。

Python爬虫实现自动登录、签到功能的代码

到此这篇关于Python爬虫实现自动登录、签到功能的代码的文章就介绍到这了,更多相关Python爬虫实现自动登录、签到内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
提升Python程序运行效率的6个方法
Mar 31 Python
Python黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
Python正则表达式常用函数总结
Jun 24 Python
15行Python代码实现网易云热门歌单实例教程
Mar 10 Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 Python
python使用PIL和matplotlib获取图片像素点并合并解析
Sep 10 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
Feb 28 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
Mar 14 Python
python中rb含义理解
Jun 18 Python
社区版pycharm创建django项目的方法(pycharm的newproject左侧没有项目选项)
Sep 23 Python
Python中Yield的基本用法
Oct 18 Python
python3中布局背景颜色代码分析
Dec 01 Python
python openCV实现摄像头获取人脸图片
Aug 20 #Python
Python实现自动签到脚本功能
Aug 20 #Python
python如何随机生成高强度密码
Aug 19 #Python
python实现图片转换成素描和漫画格式
Aug 19 #Python
python+django+selenium搭建简易自动化测试
Aug 19 #Python
python 中的命名空间,你真的了解吗?
Aug 19 #Python
13个Pandas实用技巧,助你提高开发效率
Aug 19 #Python
You might like
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
laravel 错误处理,接口错误返回json代码
2019/10/25 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
JQuery表格内容过滤的实现方法
2013/07/05 Javascript
jquery的flexigrid无法显示数据提示获取到数据
2013/07/19 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
2017/11/17 Javascript
JS执行控制之节流模式实例分析
2018/12/21 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
python构造icmp echo请求和实现网络探测器功能代码分享
2014/01/10 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
Python @property装饰器原理解析
2020/01/22 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
楼面部长岗位职责范本
2014/02/14 职场文书
商务日语专业自荐信
2014/04/17 职场文书
《天游峰的扫路人》教学反思
2014/04/25 职场文书
骨干教师考核方案
2014/05/09 职场文书
2014全年工作总结
2014/11/27 职场文书
公司会议开幕词
2015/01/29 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
电视新闻稿
2015/07/17 职场文书
小学远程教育工作总结
2015/08/13 职场文书
Python数据分析之pandas读取数据
2021/06/02 Python
CSS Transition通过改变Height实现展开收起元素
2021/08/07 HTML / CSS
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers
详解PyTorch模型保存与加载
2022/04/28 Python