Python爬虫实现自动登录与每日签到功能实战

季宁
季宁
发布时间:2026-10-14 | 6人浏览过
原创

本文介绍如何利用Python编写爬虫程序,结合Fiddler工具分析网络请求,实现特定素材网站的自动登录与每日签到功能。通过抓取登录接口和签到接口的参数及Cookie,程序可模拟用户操作自动获取积分,并可通过Windows任务计划实现定时运行,解决手动签到繁琐的问题。

更新记录:2016年8月9日。近期发现目标网站已屏蔽该登录签到接口(注:尽管如此,作者仍通过此方式获取了约一万点积分)。

Python爬虫自动签到背景与工具准备

此前,作者女友反映在某素材网站下载资源时积分常显不足。该网站积分主要通过每日登录签到获得,也可购买,但女友因使用频率低且易忘记签到,导致积分短缺。为解决这一痛点,作者编写了一个Python爬虫,旨在每日自动执行签到以积累积分。下文将详细解析相关代码实现。

本教程基于Python 3.4版本编写,使用Python 2.x的用户请自行参考其他相关资料。

辅助工具:Fiddler

首先需下载安装Fiddler软件。该工具用于监听网络请求,帮助分析具体的请求链接及传输参数。

访问目标网站:http://www.17sucai.com/,并点击登录按钮。

在尝试登录前,先启动Fiddler。此时Fiddler中尚未捕获到任何网络请求。随后回到网页,输入邮箱和密码并点击登录,再返回Fiddler查看捕获结果。

Fiddler列表中的第一个请求即为点击登录后发出的网络请求。点击该链接,可在右侧面板查看详细的请求信息。

点击“WebForms”标签页,可查看提交的具体请求参数,即用户名和密码。

使用Fiddler分析登录请求

接下来,通过代码实现上述登录功能。

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中的捕获情况。

点击该链接,对比右侧请求信息,确认其与浏览器手动请求的内容一致。

以下是程序运行后打印的输出信息。

返回结果中code=200表示登录成功。

获取签到接口与Cookie处理

随后需获取签到接口的URL。为此,需使用一个未签到的账号在网站上点击签到按钮,并通过Fiddler捕获签到链接及相关信息。

点击“签到”按钮,签到成功后,在Fiddler中查看捕获到的URL。

点击该URL,可在右侧查看访问该链接所需的头信息(Headers)和Cookies等数据。由于登录成功后已获取Cookie,Python对Cookie处理有良好封装,以下代码展示了Cookie的具体使用方法。


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

签到成功返回的信息中,code=200表示请求成功,day=1表示连续签到天数,score=20表示本次获得的积分数。

下方提供完整代码。测试时,需使用一个尚未签到的账号。

签到功能代码与定时任务配置


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脚本,并在Windows“任务计划”中添加定时任务,以实现自动化运行。

在此之前,需确保Python环境变量已配置正确,此处不再赘述。

至此,关于Python爬虫实现自动登录与签到功能的代码介绍完毕。如需了解更多Python爬虫相关内容,请搜索本站历史文章或继续阅读后续文章,感谢支持!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表