入门爬虫一段时间,最近在做一个拉勾网的数据爬虫分析,项目也快接近尾声了,于是抽个时间写一下这个项目中遇到的一些问题。

目前拉勾网的反爬虫机制还是可以的,一开始用scrapy shell 分析拉勾网,发现拉勾网要校验useragent,然后访问不到几次就会被重定向到登录页面,即拉勾网会校验cookie。

下面是模拟登陆的思路:
拉勾网登录页面: https://passport.lagou.com/login/login.html

抓包分析一下

可以分析出模拟登陆需要的参数:
url = “https://passport.lagou.com/login/login.html”

postData = {
‘isValidate’ : ‘true’,
‘username’ : username,
‘password’: password,
‘request_form_verifyCode’: ”,
‘submit’: ”
}

HEADERS = {
‘Referer’: ‘https://passport.lagou.com/login/login.html‘,
‘User-Agent’: ”,
‘X-Requested-With’: ‘XMLHttpRequest’,
‘X-Anit-Forge-Token’: ”,
‘X-Anit-Forge-Code’, ”,
}

那么如何去获取X-Anit-Forge-Token、X-Anit-Forge-Code这两个参数呢?
我们打开F12认真看登录页面的源代码

可以在head标签里面可以找到这两个值,只需要用正则去匹配出来就可以了。

那么登录的密码是怎么加密的呢?
从源码里可以看出,登录页面 加载的js并不多,那么就一个一个找吧。
在 main.html_aio_f95e644.js (“https://img.lagou.com/passport/static/pkg/pc/page/login/main.html_aio_f95e644.js“)
这个js里面发现了加密的方法:

首先对密码进行一次md5加密:password = md5(password)
然后前后加上veenike这串字符: password = “veenike” + password + “veenike”
最后再次进行md5加密:password = md5(password)

那么到这里分析就差不多了,下面为模拟登录的代码

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests
import hashlib
import re#请求对象
session = requests.session()#请求头信息
HEADERS = {'Referer': 'https://passport.lagou.com/login/login.html','User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:51.0) Gecko/20100101 Firefox/51.0',
}def get_password(passwd):'''这里对密码进行了md5双重加密 veennike 这个值是在main.html_aio_f95e644.js文件找到的 '''passwd = hashlib.md5(passwd.encode('utf-8')).hexdigest()passwd = 'veenike' + passwd + 'veenike'passwd = hashlib.md5(passwd.encode('utf-8')).hexdigest()return passwddef get_token():Forge_Token = ""Forge_Code = ""login_page = 'https://passport.lagou.com/login/login.html'data = session.get(login_page, headers=HEADERS)match_obj = re.match(r'.*X_Anti_Forge_Token = \'(.*?)\';.*X_Anti_Forge_Code = \'(\d+?)\'', data.text, re.DOTALL)if match_obj:Forge_Token = match_obj.group(1)Forge_Code = match_obj.group(2)return Forge_Token, Forge_Codedef login(username, passwd):X_Anti_Forge_Token, X_Anti_Forge_Code = get_token()login_headers = HEADERS.copy()login_headers.update({'X-Requested-With': 'XMLHttpRequest', 'X-Anit-Forge-Token': X_Anti_Forge_Token, 'X-Anit-Forge-Code': X_Anti_Forge_Code})postData = {'isValidate': 'true','username': username,'password': get_password(passwd),'request_form_verifyCode': '','submit': '',}response = session.post('https://passport.lagou.com/login/login.json', data=postData, headers=login_headers)print(response.text)def get_cookies():return requests.utils.dict_from_cookiejar(session.cookies)if __name__ == "__main__":username = '1371XXXXXXX'passwd = 'xxxxxxxxxx'login(username, passwd)print(get_cookies())

控制台结果

模拟登录以后便能获取到cookie,为爬虫做准备。代码拷贝就即能跑,不过拉勾网的登录校验随时会改变,若发现登录失败的可以在下面评论,我会抽空更新代码。

github地址:https://github.com/laichilueng/lagou_login
喜欢的可以去点个赞,谢谢

python -- 拉勾网爬虫模拟登录相关推荐

  1. 【Python技能树共建】Python爬虫模拟登录

    Python 爬虫模拟登录 Python 爬虫模拟登录是使用脚本实现自动登录,部分站点需要逆向加密逻辑,更多的站点会采用验证码进行鉴权验证. 本文为大家带来最简单的登录,其核心用到的是 request ...

  2. python爬虫 模拟登录人人网过程解析

    这篇文章主要介绍了python爬虫 模拟登录人人网过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 equests 提供了一个叫做sessio ...

  3. python登录教务系统_强智科技教务系统python爬虫模拟登录分析(湖南)

    强智科技教务系统python爬虫模拟登录分析(湖南) 本文章仅用作于学习 前提:最近期末到来,想第一时间看到新出成绩的,于是就有了爬取学校教务系统自己的成绩并通过Qmsg酱推送到自己QQ上的想法,目前 ...

  4. python–爬虫–模拟登录全面介绍和简例–以抓取雅卓app为例

    转载请注明出处:python–爬虫–模拟登录全面介绍和简例–以抓取雅卓app为例 我们在前面的文章中已经学习了如果使用python进行数据抓取. 但我们常常会遇到一种场景,就是想要获取的页面内容或者接 ...

  5. python爬虫登陆教程_(python模拟登陆教程)python爬虫模拟登录是什么意思

    python爬虫模拟登录是什么意思 网站需要登录后才能所需要的信息,此时可以设计爬虫进拟登录,原理是利用浏cookie. 一.浏览器访问服务器的过程: (1)浏览器(客户端)向Web服务器发出一个HT ...

  6. Python 利用 cookie 模拟登录,爬取指定关键词的淘宝商品信息

    Python 利用 cookie 模拟登录,爬取指定关键词的淘宝商品信息-Selenium 1. 本文目标 由于淘宝网站的不断更新,以前的爬取方法都无法重现,必须需要登录淘宝网站才可以进行搜索商品.所 ...

  7. Github项目分享——爬虫模拟登录各大平台

    爬虫模拟登录各大平台 项目地址 https://github.com/Kr1s77/awesome-python-login-model 项目介绍

  8. 新浪微博爬虫模拟登录(爬手机版)

    新浪微博爬虫模拟登录 最近一直在想做新浪微博爬取,开始的时候做了一个PC版的爬取,但是发现提取内容真心难过所以在这里爬了手机版的话不多说,show you my code 这个可以提取固定人微博内容, ...

  9. 枯燥的寒假生活(一) python爬虫模拟登录whu老教务系统获取期末考试成绩(已失效 , 老教务系统增加了新的反爬, 老教务系统已停用)

    python模拟登录老教务系统(2021.6.24更新) 一.写在前面 之前用爬虫爬取的都是静态网页html中的内容,但是大多数时候需要动态处理网页爬取数据.因为学校出成绩太慢了,每次都自己打开浏览器 ...

  10. python淘宝cookies抢购_python实现简单爬虫模拟登录淘宝(cookie简介)

    试验了一个晚上,python的小爬虫还是挺可爱的,简单几行就可以抓取网页了.如果你和我一样是新手,你可以先去http://blog.csdn.net/column/details/why-bug.ht ...

最新文章

  1. 一个撇脚的java压缩文件工具类
  2. PHP简单实现一言 / 随机一句功能
  3. CZoneSoft出品: 音频视频在线录制系列之 AV留言本 简介
  4. SpringMVC注解@RequestParam(value=xxxx,required=false)解释
  5. python【数据结构与算法】最大上升子序列(简单dp)
  6. es中的DiscoveryModule
  7. 【模拟】P1563 玩具谜题
  8. 区域生长算法原理及MATLAB实现
  9. Excel催化剂开源第37波-音视频文件元数据提取(分辨率,时长,采样率等)
  10. java jvm虚拟机_Java虚拟机(JVM)简介
  11. e2 android,魅蓝E2做工怎么样?魅蓝手机E2拆机全过程图解
  12. mermaid流程图工具_Markdown高级使用之流程图
  13. 是夫妻就一起把它戒了吧!
  14. hive数据去重测试
  15. linux 启动作业,[转载] 随身带着走的作业系统 ~安装Linux作业系统于随身碟~
  16. CSS权威指南(4)
  17. 【2022最新Java面试宝典】—— Java集合面试题(52道含答案)
  18. 接口请求 Provisional headers are shown
  19. Elasticsearch(006):es中filtered和filter的区别
  20. typedef和define

热门文章

  1. 关于Qt的无边框窗口移动
  2. gitlab修改服务器地址,GitLab服务器IP地址设置
  3. 微分方程模型_MIT—微分方程笔记03 一阶线性常微分方程解法
  4. 安全模型和业务安全体系
  5. elementUI 日 周 月 季 年 时间选择控件封装
  6. 计算机网络公网ip,怎么查看电脑的公网IP地址
  7. 云专网和云专线的区别_云专线网络接入解决方案
  8. js从地址栏获取参数
  9. matlab串联矩阵如何表示,MATLAB串联矩阵
  10. 记一次烧毁AO3400的过程