网站首页 > 技术文章 正文
我用 python 做爬虫爬过不少数据,比如在 google play 爬应用信息;在 instragram, 500px 爬图片;当然爬虫的作用不止于此,比如定时去某个网站签到,妈妈再也不用担心我忘记签到了
这些网站支持游客访问,但要访问特定内容,比如你收藏的图片,或者要签到,那前提是要登录。
现在的网站登录验证是越来越复杂了,且不说那些真人都挠头的验证码,就算是不需要验证码的网站,也各出奇招,像 gitee 是通过前端加密登录信息,而 instagram 则是通过 url 里的 query_hash 以及 header 里的 X-CSRFToken,X-Instagram-GIS 来做校验,对爬虫很不友好,都不是那么容易登录进去的
直接发送账号密码到登录接口
有些淳朴的网站,其登录校验只要提供帐号密码就行,通过浏览器抓包看下数据格式,然后照样发起请求,就可以了
比如 500px,其登录验证几乎没有难度,代码如下
# -*- coding: utf-8 -*-
import requests
import json
from profile import email, password
session = requests.session()
if __name__ == '__main__':
url = 'https://api.500px.com/v1/session'
data = {
'session':
{
'email': email,
'password': password
}
}
headers = {'Content-Type': 'application/json'}
result = session.post(url, data=json.dumps(data), headers=headers)
print(result.text)
登录成功后,网站会向客户端写入 cookie,后续访问就一路畅通了,在 python 里则意味着我们需要用 session 发起后续请求
复杂的登录校验
这次以 gitee 为例,来研究下如何登录,先用浏览器抓包看下 gitee 的登录
可以看到要登录 gitee,请求参数里有 authenticity_token 和 加密后的 password
这个 token 怎么来的?根据经验判断应该是藏在 gitee 登录页某处,感觉不难获取;关键是这个 password 的加密,应该是某个 js 脚本的功劳,不过要逆向出 js 是如何加密的,的确是非常困难的。。。毕竟我们不是 js 执行引擎
如果无法逆向出这个加密算法,要怎么登录呢?可以先用浏览器登录,再把 cookie 复制出来给爬虫使用
首先是复制 cookie,浏览器登录 gitee 成功后,随意抓个包就可以得到 cookie 了
复制下来的 cookie 设置到爬虫里,代码如下
# -*- coding: utf-8 -*-
import requests
session = requests.session()
if __name__ == '__main__':
headers = {
'Host': 'gitee.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36',
'Accept': 'application/json',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
}
url = 'https://gitee.com/api/v3/internal/my_resources'
result = session.get(url=url, headers=headers)
if result.status_code == 200:
print('success: \n%s' % (result.text))
else:
print(result.status_code)
headers['Cookie'] = '......'
result = session.get(url=url, headers=headers)
if result.status_code == 200:
print('success: \n%s' % (result.text))
else:
print(result.status_code)
执行结果如下
// 未设置 cookie 返回 401
401
// 设置 cookie 后返回数据
success:
{"enterprises_count":0...}
可见,使用浏览器的 cookie 就可以达到爬虫免登录的效果了
程序自动获取 cookie
浏览器抓包再复制 cookie 到爬虫代码,感觉有点 low,实际上 cookie 是保存在我们电脑上的,这样浏览器才能做到记住登录状态功能
那么可以让爬虫自己读取浏览器 cookie,从而避免我们抓包再复制吗?答案是肯定的,考虑到文章篇幅,我将在下一篇文章里介绍如何用代码读取浏览器已存储 cookie 来进行登录,敬请期待
猜你喜欢
- 2025-05-25 Python从放弃到入门:公众号历史文章爬取为例谈快速学习技能
- 2025-05-25 你要偷偷的学Python,然后惊呆所有人(第十一天)
- 2025-05-25 玛森:Python爬虫书籍推荐
- 2025-05-25 Python-web开发必备的9个知识点
- 2025-05-25 通过https协议发送skype信息给朋友python
- 2025-05-25 python使用技巧之环境搭建(办公自动化方向)
- 2025-05-25 接口测试实战:Jmeter与Python结合测试异步接口场景
- 2025-05-25 阿六带你用python appium搭建app自动化测试环境
- 2025-05-25 Python应该怎么学?
- 2025-05-25 揭秘Instagram登录逆向,以及完整的python代码实现
- 05-25Python 3.14 t-string 要来了,它与 f-string 有何不同?
- 05-25Python基础元素语法总结
- 05-25Python中的变量是什么东西?
- 05-25新手常见的python报错及解决方案
- 05-2511-Python变量
- 05-2510个每个人都是需要知道Python问题
- 05-25Python编程:轻松掌握函数定义、类型及其参数传递方式
- 05-25Python基础语法
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 90℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 81℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)