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遍历类中所有成员的方法
Mar 18 Python
Python中最常用的操作列表的几种方法归纳
Apr 24 Python
Python中unittest模块做UT(单元测试)使用实例
Jun 12 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
May 03 Python
详解Django-auth-ldap 配置方法
Dec 10 Python
详解python中的线程与线程池
May 10 Python
python多线程案例之多任务copy文件完整实例
Oct 29 Python
python实现百度OCR图片识别过程解析
Jan 17 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
Feb 18 Python
python实现随机加减法生成器
Feb 24 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
Mar 30 Python
python自动计算图像数据集的RGB均值
Jun 18 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
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
2011/03/23 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
2014/05/10 PHP
php中session定期自动清理的方法
2015/11/12 PHP
PHP list() 将数组中的值赋给变量的简单实例
2016/06/13 PHP
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
JavaScript下通过的XMLHttpRequest发送请求的代码
2011/06/28 Javascript
理解JSON:3分钟课程
2011/10/28 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
jquery获取文档高度和窗口高度汇总
2016/01/25 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)
2017/03/21 Javascript
easyui关于validatebox实现多重规则验证的方法(必看)
2017/04/12 Javascript
JavaScript编写的网页小游戏,很给力
2017/08/18 Javascript
微信小程序实现图片预览功能
2018/01/31 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
swiper 自动图片无限轮播实现代码
2018/05/21 Javascript
[05:23]DOTA2-DPC中国联赛2月1日Recap集锦
2021/03/11 DOTA
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
python爬虫之爬取百度音乐的实现方法
2019/08/24 Python
python分布式爬虫中消息队列知识点详解
2020/11/26 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
html5 canvas移动浏览器上实现图片压缩上传
2016/03/11 HTML / CSS
经典c++面试题三
2015/07/08 面试题
企业安全生产标语
2014/06/06 职场文书
大学生标准自荐书
2014/06/15 职场文书
心理学专业求职信
2014/06/16 职场文书
驾驶员安全责任书范本
2014/07/24 职场文书
合同权益转让协议书模板
2014/11/18 职场文书
《索溪峪的野》教学反思
2016/02/19 职场文书
Python 线程池模块之多线程操作代码
2021/05/20 Python