您现在的位置:首页 > 游戏资讯 > 游戏新闻

模拟登陆完成后,你还需要设置环境变量(macOS系统)

来源:完美世界私服 浏览次数: 发布时间:2022-06-26 19:16:26

# -*- coding:utf-8 -*-
import re
import os
import time
import json
import sys
import subprocess
import requests
import hashlib
from bs4 import BeautifulSoup
"""
info:
author:CriseLYJ
github:https://github.com/CriseLYJ/
update_time:2019-3-6
"""
class Lagou_login(object):
    def __init__(self):
        self.session = requests.session()
        self.CaptchaImagePath = os.path.split(os.path.realpath(__file__))[0] + os.sep + 'captcha.jpg'
        self.HEADERS = {'Referer': 'https://passport.lagou.com/login/login.html',
                        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36'
                                      ' (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36'
                                      ' Core/1.53.4882.400 QQBrowser/9.7.13059.400',
                        'X-Requested-With': 'XMLHttpRequest'}
    # 密码加密
    def encryptPwd(self, passwd):
        # 对密码进行了md5双重加密
        passwd = hashlib.md5(passwd.encode('utf-8')).hexdigest()
        # veennike 这个值是在js文件找到的一个写死的值
        passwd = 'veenike' + passwd + 'veenike'
        passwd = hashlib.md5(passwd.encode('utf-8')).hexdigest()
        return passwd
    # 获取请求token

def getTokenCode(self): login_page = 'https://passport.lagou.com/login/login.html' data = self.session.get(login_page, headers=self.HEADERS) soup = BeautifulSoup(data.content, "lxml", from_encoding='utf-8') ''' 要从登录页面提取token,code, 在头信息里面添加 <script type="text/javascript"> window.X_Anti_Forge_Token = 'dde4db4a-888e-47ca-8277-0c6da6a8fc19'; window.X_Anti_Forge_Code = '61142241'; </script> ''' anti_token = {'X-Anit-Forge-Token': 'None', 'X-Anit-Forge-Code': '0'} anti = soup.findAll('script')[1].getText().splitlines() anti = [str(x) for x in anti] anti_token['X-Anit-Forge-Token'] = re.findall(r'= \'(.+?)\'', anti[1])[0] anti_token['X-Anit-Forge-Code'] = re.findall(r'= \'(.+?)\'', anti[2])[0] return anti_token # 人工读取验证码并返回 def getCaptcha(self): captchaImgUrl = 'https://passport.lagou.com/vcode/create?from=register&refresh=%s' % time.time() # 写入验证码图片 f = open(self.CaptchaImagePath, 'wb') f.write(self.session.get(captchaImgUrl, headers=self.HEADERS).content) f.close() # 打开验证码图片 if sys.platform.find('darwin') >= 0: subprocess.cx5c r[p'6;-]l=09all(['open', self.CaptchaImagePath]) elif sys.platform.find('linux') >= 0: subprocess.call(['xdg-open', self.CaptchaImagePath]) else: os.startfile(self.CaptchaImagePath) # 输入返回验证码 captcha = input("请输入当前地址(% s)的验证码: " % self.CaptchaImagePath) print('你输入的验证码是:% s' % captcha) return captcha # 登陆操作 def login(self, user, passwd, captchaData=None, token_code=None): postData = {'isValidate': 'true', 'password': passwd, # 如需验证码,则添加上验证码 'request_form_verifyCode': (captchaData if captchaData != None else ''), 'submit': '', 'username': user } login_url = 'https://passport.lagou.com/login/login.json' # 头信息添加tokena login_headers = self.HEADERS.copy() token_code = self.getTokenCode() if token_code is None else token_code login_headers.update(token_code) # data = {"content":{"rows":[]},"message":"该帐号不存在或密码错误,请重新输入","state":400} response = self.session.post(login_url, data=postData, headers=login_headers) data = json.loads(response.content.decode('utf-8')) if data['state'] == 1: return response.content elif data['state'] == 10010: print(data['message']) captchaData = self.getCaptcha() token_code = {'X-Anit-Forge-Code': data['submitCode'], 'X-Anit-Forge-Token': data['submitToken']} return self.login(user, passwd, captchaData, token_code) else: print(data['message']) return False if __name__ == "__main__": username = input("请输入你的手机号或者邮箱\n >>>:") passwd = input("请输入你的密码\n >>>:") lg = Lagou_login() passwd = lg.encryptPwd(passwd) data = lg.login(username, passwd) if data: print(data) print('登录成功') else: print('登录不成功')

从标头的导入中,您需要安装和加载模块:

pip install beautifulsoup4

安装完成后,终端需要cd到脚本所在文件夹,执行脚本:

python Lagou.py

运行脚本后,需要输入一定的信息才能登录,非常方便周到:

国外友人开创Python模拟登陆神库,完美修改它为咱们所用

登录后,您可以为所欲为。

3.基于模拟登录

一些网站的爬取并不是那么简单。他们会做权限验证和反爬机制。在这种情况下,我们可以使用它来解决一些困难和复杂的登录场景。

基于模拟登录稍微复杂一些,需要设置环境变量的路径。如果不设置,运行登录脚本时会报如下错误:

如何下载并设置环境变量?您可以在此处下载最新版本:

现在最新版本号为91.0.4472.101,下载链接如下:

可以看出,每个系统需要下载的版本不同,请下载您系统对应的指定版本。

对于 macOS 系统,mac64 和 是指使用不同芯片的 Mac 笔记本电脑。您可以在 Mac 上单击菜单栏左上角的 [Apple] 图标,然后选择“关于本机”选项。如果你看到下面写的芯片Apple M1完美国际外挂源代码,你应该下载版本。

国外友人开创Python模拟登陆神库,完美修改它为咱们所用

如果你的网络有问题无法下载,没关系,关注实用收藏公众号,后台回复即可下载。我把这4个版本放在国内网盘上。

下载完成后,还需要设置环境变量

(macOS 系统)请像这样设置环境变量:

1. 将解压后的文件放在您不会经常更改的路径中

如/usr/local/bin/,需要输入+空格并打开终端(),执行如下命令:

cd /usr/local/bin/
open .

然后拖进去,就可以成功放进去了。

2.添加环境变量

要添加到环境变量,请在终端中键入以下命令:

export PATH=$PATH:/usr/local/bin/chromedriver

执行此步骤后,恭喜您成功安装 .

(系统)请像这样设置环境变量:

1.在左下角搜索环境变量,打开“编辑系统环境变量”选项:

国外友人开创Python模拟登陆神库,完美修改它为咱们所用

2.设置环境变量:

国外友人开创Python模拟登陆神库,完美修改它为咱们所用

如图所示,将您的主目录放入 PATH 变量中。比如我的.exe的路径是C:\Users\83493\\bin\.exe,那么这里应该填写C:\Users\83493\\bin路径。

设置完成后,您已经成功安装到电脑上。另外请注意,设置后需要重启终端或CMD才能使环境变量生效。

另外,如果你在使用的时候遇到类似如下的错误,也不要惊慌:

这是因为现在的版本是91,而你现在的版本是90,升级可以解决问题。

完成基本配置后,我们可以尝试运行QQ空间来模拟登录:

进入项目文件夹的文件夹:

cd awesome-python-login-model\qqzone

然后直接运行.py文件:

python qq_zone.py

将弹出一个浏览器并让您输入信息:

输入信息后,登录过程将正常进行:

看到上面的界面,就说明登录完成了。这个时候,一切都已经准备好了。您可以保存它并做任何您想做的事情。

如果你愿意研究作者的代码,你会发现其实很简单:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
info:
author:CriseLYJ
github:https://github.com/CriseLYJ/

update_time:2019-3-7 """ import time # 用来延时 from selenium import webdriver driver = webdriver.Chrome() # 选择浏览器,此处我选择的Chrome QQ_NUMBER = input('请输入你的QQ号') PASSWORD = input('请输入你的QQ密码') driver.get('http://i.qq.com/') driver.switch_to.frame('login_frame') driver.find_element_by_id('switcher_plogin').click() driver.find_element_by_name('u').clear() driver.find_element_by_name('u').send_keys(QQ_NUMBER) # 此处输入你的QQ号 driver.find_element_by_name('p').clear() driver.find_element_by_name('p').send_keys(PASSWORD) # 此处输入你的QQ密码 driver.execute_script("document.getElementById('login_button').parentNode.hidefocus=false;") driver.find_element_by_xpath('//*[@id="loginform"]/div[4]/a').click() driver.find_element_by_id('login_button').click() time.sleep(10) # 因为我曾经是QQ会员,所以每次登陆时都会提醒我要不要再续费的弹窗... driver.find_element_by_id('dialog_button_1').click() # 这个地方是我把那个弹窗给点击了,配合上面的延时用的,延时是等待那个弹窗出现,然后此处点击取消 btns = driver.find_elements_by_css_selector('a.item.qz_like_btn_v3') # 此处是CSS选择器 for btn in btns: btn.click()

简单来说,代码分为4步,如下:

1.让用户输入QQ号和密码。

2.将浏览器焦点切换到登录框,选择要输入账号和密码的元素。

3.为了显示登录按钮,执行以下脚本:

driver.execute_script("document.getElementById('login_button').parentNode.hidefocus=false;")

4.点击确认按钮完成登录。

可见,基于它的自动化控制一点都不难。一旦熟悉了控制过程和相应的方法完美国际外挂源代码,就应该如鱼得水。这个自动化工具只要经过一开始的繁琐安装阶段,以后开发代码时参考别人的代码,就能熟练掌握。

总而言之,--login-model 是一个模拟登录的代码库,可以给你带来很多方便。您可以直接根据它提供的登录脚本进行开发,也可以参考这些脚本自己为其他网站编写模拟登录脚本。并向作者提交 PR。

推荐阅读