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使用Berkeley DB数据库实例
Sep 26 Python
用Python编写一个每天都在系统下新建一个文件夹的脚本
May 04 Python
回调函数的意义以及python实现实例
Jun 20 Python
Django添加feeds功能的示例
Aug 07 Python
使用Python获取并处理IP的类型及格式方法
Nov 01 Python
启动Atom并运行python文件的步骤
Nov 09 Python
Python英文文本分词(无空格)模块wordninja的使用实例
Feb 20 Python
PyQt5 在label显示的图片中绘制矩形的方法
Jun 17 Python
Tensorflow的常用矩阵生成方式
Jan 04 Python
Python sys模块常用方法解析
Feb 20 Python
python温度转换华氏温度实现代码
Dec 06 Python
OpenCV-Python 实现两张图片自动拼接成全景图
Jun 11 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操作sqlserver关于时间日期读取的小小见解
2009/11/29 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
JSQL 基于客户端的成绩统计实现方法
2010/05/05 Javascript
jQuery实现可拖动的浮动层完整代码
2013/05/27 Javascript
jQuery实现预加载图片的方法
2015/03/17 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
JavaScript使用concat连接数组的方法
2015/04/06 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
jQuery插件支持同一页面被多次调用
2016/02/14 Javascript
浅析js绑定事件的常用方法
2016/05/15 Javascript
在Python中使用dict和set方法的教程
2015/04/27 Python
python爬取亚马逊书籍信息代码分享
2017/12/09 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
python递归实现快速排序
2018/08/18 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
python 判断linux进程,并杀死进程的实现方法
2019/07/01 Python
Python 实现数据结构-循环队列的操作方法
2019/07/17 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
联想瑞士官方网站:Lenovo Switzerland
2017/11/19 全球购物
知识竞赛活动方案
2014/02/18 职场文书
销售口号大全
2014/06/11 职场文书
五年级学生期末评语
2014/12/26 职场文书
奖金申请报告模板
2015/05/15 职场文书
贷款收入证明格式
2015/06/24 职场文书
2016大学军训通讯稿
2015/11/25 职场文书
初中信息技术教学反思
2016/02/16 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书