基于Python的拉勾网的模拟登录获取cookie

article/2025/7/11 12:12:32

lagou_login

拉勾网的模拟登录获取cookie,为爬虫做准备, 喜欢的点个赞,谢谢

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

目前拉勾网的反爬虫机制还是可以的,一开始用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',http://www.biyezuopin.vip
}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)http://www.biyezuopin.vipprint(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())

控制台结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IQikVSuM-1645412448139)(image/6.png)]
在这里插入图片描述

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


http://chatgpt.dhexx.cn/article/wUBqUHcB.shtml

相关文章

selenium模拟登陆拉勾网

初学selenium,尝试了一下模拟登录拉勾网,感觉还挺好玩的 就剩下最后的验证码不会处理了。。。 思路就是在网页代码中找到对应的框的属性进行查询,然后点击、输入就进行了。 之后就会看到Chrome弹出来自动完成一系列动作,感觉很…

如何高效地学习编程语言?

学习编程语言是一种技巧:做好了,你会感受到掌握新事物之后的快感;做不好,就会接二连三的沮丧,甚至放弃。下面我将介绍一些技巧与方法,以便帮助大家高效地学习。 持续测试自己以抵抗胜任力错觉 最不济的学习…

完全零基础,到底该怎样学习编程?

学习编程的过程,大致如下: 看书、看博客、学课程或者看视频等 模仿着书上或者博客的代码,进行复现,复现不重要,思考才是关键 ⚠️ 思考学习别人思路后,脱离书本和博客,完全自己实现功能 自己…

学习编程先学什么?怎么学习编程?

怎么学习编程 随着IT行业的快速发展,现在越来越多的人看中IT行业的前景,很多的人选择IT行业。其中大部分人会选择了学习编程语言,那么,怎么学习编程语言、学习编程先学什么就是人们最常遇到的困难,因此,小编…

我是如何学习编程的

我是如何学编程的 前世因今世果一轮回一回眸理论基础资源选择编程没有捷径合格程度兴趣培养学习时长解决问题推荐资源 学习资源推荐 微信扫码关注公众号 :前端前端大前端,追求更精致的阅读体验 ,一起来学习啊关注后发送关键资料,免费获取一整…

骨灰级程序员告诉你,怎样学习编程,才能快速从0基础,变成编程大师

本文章向大家介绍怎样学习编程,才能快速从0基础,变成编程大师,主要包括骨灰级程序员告诉你,怎样学习编程,才能快速从0基础,变成编程大师使用实例、应用技巧、基本知识点总结和需要注意事项,具有…

新手如何学习编程?

文章来源:微信公众号丨代码情缘 这篇文章就和大家简单聊聊,如何学习编程? 2021 年内卷、躺平从一个小圈子话题快速升温为社会话题,其实很多人都想过躺平,那么首先问一下自己,有什么资本躺平? …

想自学编程,先学什么好?给你三个建议,自己斟酌

要学一门编程语言,我们要了解相应的语法规则,大概知道计算机读取代码的逻辑,培养机器思维。 学习编程,最开始应该先了解一下计算机的历史,计算机基础。因为你在编程的时候,你需要让计算机知道你的思维&…

微信小程序map组件地图定位当前位置

小程序map组件的应用方式&#xff1a;简单版 wxml: <map id"map" latitude"{{latitude}}" longitude"{{longitude}}" controls"{{controls}}" bindcontroltap"controltap"markers"{{markers}}" bindmarkerta…

Android 开发百度地图定位显示当前位置

Android 开发百度地图定位显示当前位置 配置百度地图-获取 SHA1 找到自己安装 Android SDK 的位置&#xff08;&#xff0c;该位置下面有一个 .android 文件夹&#xff1b;使用 cmd 命令进入该文件夹下&#xff1b;然后执行命令 keytool -list -v -keystore debug.keystore&a…

uniapp获取当前位置(定位-经纬度及城市信息)

uniapp集成方法&#xff0c;跟小程序wx.getLocation不同&#xff0c;可直接获取经纬度及城市信息&#xff08;当然你也可以先获取经纬度再解析成具体城市&#xff09; uni.getLocation({type: wgs84,geocode:true,//设置该参数为true可直接获取经纬度及城市信息success: func…

Android 百度地图定位显示当前位置

配置百度地图 配置百度地图 获取 SHA1 在 Android Studio 中通过命令行获取&#xff0c;步骤如下&#xff1a; 点击左下角的 Terminal进入D:\Android\jre\bin输入指令keytool -list -v -keystore debug.keystore 获取百度地图密钥&#xff08;AK&#xff09; 进入百度地图官网&…

微信小程序 腾讯地图大头针定位,获取当前地址,地图移动选点,定位当前位置

主要实现功能&#xff1a; a.进入地图界面&#xff0c;会自动获取当前位置&#xff08;用户需授权地理位置权限&#xff09;&#xff0c;并显示省市区在左上角&#xff0c;根据个人需求&#xff0c;我只显示了区 b.大头针实现&#xff0c;拖动地图&#xff0c;大头针都能获取到…

[android] 百度地图开发 (三).定位当前位置及getLastKnownLocation获取location总为空问题

前一篇百度地图开发讲述"(二).定位城市位置和城市POI搜索"&#xff0c;主要通过监听对象MKSearchListener类实现城市兴趣点POI(Point of Interest)搜索。该篇讲述定位当前自己的位置及使用getLastKnownLocation获取location总时为空值的问题。 一. 定位当前位置的原…

Android进阶之路 - 定位当前位置、获取经纬度

最近又遇到定位场景&#xff0c;需要上传经纬度&#xff0c;正好同事写了&#xff0c;我就记录一下方便你我他 ~ ~ 今年开始用的kt比较多&#xff0c;所以篇内用的kt&#xff0c;见谅见谅 前情悉知 获取当前位置时&#xff0c;需要判断用户是否授权&#xff0c;这里用到的是 …

vue-amap实现实现初始化并定位当前位置,搜索,定位,增加点标记

实现如图展示&#xff0c;初始化并定位当前位置&#xff0c;搜索&#xff0c;定位&#xff0c;增加点标记 下载vue 1.vue页设置 如果是新版web-js的密钥&#xff0c;有配套的安全秘钥&#xff0c;则需要另外在created加入&#xff0c;否则会报undefined window._AMapSecurity…

vue3定位当前位置,获取当前位置的经纬度

vue3定位当前位置&#xff0c;获取当前位置的经纬度 注意事项&#xff08;访问地址必须是https&#xff09;获取当前位置经纬度 注意事项&#xff08;访问地址必须是https&#xff09; 在vue.config.js文件内设置https:true&#xff0c;然后重启一下项目 获取当前位置经纬度 …

新建文本文档

使用百度地图&#xff0c;定位你当前位置并显示 1、准备 注册百度开发者账号到百度地图开放平台创建应用&#xff08;as获取SHA1值&#xff09; 2、将sdk整到你的项目中去 - 在你app的gradle.build中添加 dependencies {...... compile files(libs/baidumapapi_base_v4_0…

web端定位:获取当前地理位置

2019独角兽企业重金招聘Python工程师标准>>> 方法一:html5原生提供的定位: 讲解:在支持HTML5的浏览器下,navigator对象下有一个属性----geolocation,而geolocation属性又有个方法getCurrentPosition(回调函数1,回调函数2)可以通过浏览器向设备发起定位请求,浏…

uniapp 之定位当前位置 (uni.getLocation,腾讯地图,javascript)

第一种 uniapp uniapp 封装的方法可以拿到城&#xff0c;市&#xff0c;县&#xff0c;经纬度。 实例&#xff1a; //获取位置GetLOcation: function() {var that this;uni.getLocation({type: gcj02,success: (res) > {console.log(res)var latitude parseFloat(res.la…