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库urllib与urllib2主要区别分析
Jul 13 Python
Python中time模块与datetime模块在使用中的不同之处
Nov 24 Python
python3设计模式之简单工厂模式
Oct 17 Python
python的turtle库使用详解
May 10 Python
python实现弹跳小球
May 13 Python
对PyQt5中的菜单栏和工具栏实例详解
Jun 20 Python
python与C、C++混编的四种方式(小结)
Jul 15 Python
python运用sklearn实现KNN分类算法
Oct 16 Python
pymysql模块的操作实例
Dec 17 Python
简单了解Python读取大文件代码实例
Dec 18 Python
matplotlib之pyplot模块之标题(title()和suptitle())
Feb 22 Python
Python 多线程之threading 模块的使用
Apr 14 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
如何冲泡挂耳包咖啡?技巧是什么
2021/03/04 冲泡冲煮
CakePHP去除默认显示的标题及图标的方法
2008/10/22 PHP
深入解析PHP的引用计数机制
2013/06/14 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
2014/05/07 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
UTF-8正则表达式如何匹配汉字
2015/08/03 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
2016/03/01 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
2016/05/13 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
PHP获取访问设备信息的方法示例
2019/02/20 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
artDialog双击会关闭对话框的修改过程分享
2013/08/05 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
2016/05/28 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
概述一个页面从输入URL到页面加载完的过程
2016/12/16 Javascript
js遍历json的key和value的实例
2017/01/22 Javascript
JS数组搜索之折半搜索实现方法分析
2017/03/27 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
jQuery实现弹窗下底部页面禁止滑动效果
2017/12/19 jQuery
vue axios整合使用全攻略
2018/05/24 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
浅谈Javascript常用正则表达式应用
2019/03/08 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
pandas 按照特定顺序输出的实现代码
2018/07/10 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
写好求职应聘自荐信的三部曲
2013/09/21 职场文书
企业申诉管理制度
2014/01/30 职场文书
离职信范文
2015/06/23 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书