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操作Mysql实例代码教程在线版(查询手册)
Feb 18 Python
Python内置的字符串处理函数详细整理(覆盖日常所用)
Aug 19 Python
python中对list去重的多种方法
Sep 18 Python
浅谈django中的认证与登录
Oct 31 Python
利用python实现xml与数据库读取转换的方法
Jun 17 Python
Python变量赋值的秘密分享
Apr 03 Python
Python爬虫将爬取的图片写入world文档的方法
Nov 07 Python
Python读取csv文件分隔符设置方法
Jan 14 Python
对PyQt5中的菜单栏和工具栏实例详解
Jun 20 Python
Python操作SQLite/MySQL/LMDB数据库的方法
Nov 07 Python
python如何更新包
Jun 11 Python
Python实现Appium端口检测与释放的实现
Dec 31 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 图片加水印与上传图片加水印php类
2010/05/12 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
PJBlog插件 防刷新的在线播放器
2006/10/25 Javascript
jquery each()源代码
2011/02/14 Javascript
jquery 检测元素是否存在的实例代码
2013/11/19 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
JS实现让访问者自助选择网页文字颜色的方法
2015/02/24 Javascript
jQuery实现图片局部放大镜效果
2016/03/17 Javascript
jquery广告无缝轮播实例
2017/01/05 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
React简单介绍
2017/05/24 Javascript
React Native如何消除启动时白屏的方法
2017/08/08 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
vue 组件基础知识总结
2021/01/26 Vue.js
tensorflow 获取变量&amp;打印权值的实例讲解
2018/06/14 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
python反编译学习之字节码详解
2019/05/19 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
Python 3.9的到来到底是意味着什么
2020/10/14 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
CSS3 伪类选择器 nth-child()说明
2010/07/10 HTML / CSS
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
自我鉴定模板
2013/10/29 职场文书
旅游市场营销方案
2014/03/09 职场文书
安全责任书范文
2014/03/12 职场文书
投资合作协议书范本
2014/04/17 职场文书
教师师德表现自我评价
2015/03/05 职场文书
大学生见习总结报告
2015/06/24 职场文书
python 如何执行控制台命令与操作剪切板
2021/05/20 Python
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis