登陆网站的python脚本

本文详细介绍了作者如何通过Python语言解决UCAS校园网登录问题,包括登录过程的研究和代码实现,旨在为遇到类似问题的用户提供解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于在UCAS上网采用的是登陆的方式(相信很多大学的校园网都是采用这种方式的),虽然登陆系统的主页上提供了各个系统下的登陆客户端,windows下的貌似还好用,由于一直在Ubuntu环境下,发现Linux下的客户端我安装了之后不能用。于是,每次上网需要先打开网站,输入账户,密码才能登陆,虽然可以让浏览器记住账户密码等信息,但是当清除缓存之后,又得重新输入账号密码。还是比较麻烦!


于是,上个月比较闲的时候,自己花了一晚上的时间研究了一下登陆过程,并用python自己实现了一下~


具体代码见github上,请点击这里



<think>我们正在处理用户关于京东扫码登录的Python实现问题。根据用户提供的引用,我们可以总结出几种实现方式: 1. 使用requests等库直接模拟扫码登录(如引用1、2、3) 2. 使用Selenium控制浏览器进行扫码登录(如引用4) 由于用户明确要求“扫码登录”,我们需要注意: - 京东的扫码登录流程:用户打开登录页面,出现二维码,用户用京东APP扫码确认登录,然后网页端登录成功。 - 我们需要模拟这一过程,获取登录后的cookie,以便后续操作。 考虑到引用中提供的信息,我们可以选择两种方式: 方式一:直接使用requests模拟(可能涉及API调用,但京东可能有反爬措施,且流程复杂) 方式二:使用Selenium自动化浏览器操作,这种方式更接近真实用户操作,但需要浏览器驱动。 根据引用[4]的描述,使用Selenium实现京东扫码登录并保存cookie是一个可行的方案,且该引用提供了完整的实例。因此,我们将采用Selenium的方式。 步骤: 1. 使用Selenium打开京东登录页面(扫码登录的页面) 2. 等待用户扫码(程序需要等待用户扫码成功) 3. 登录成功后获取cookie并保存到文件,以便后续使用。 注意:由于扫码登录需要人工干预(用户用手机APP扫码),所以程序需要等待一段时间,直到检测到登录成功(例如,跳转到用户主页)。 我们将编写一个Python脚本,使用Selenium实现上述流程。 需要安装的库: selenium 需要下载浏览器驱动(如Edge驱动,或者Chrome驱动等,根据用户使用的浏览器选择) 代码结构: 1. 初始化浏览器 2. 打开京东登录页面(扫码登录页面) 3. 等待用户扫码(程序等待直到页面跳转,即登录成功) 4. 保存cookie到文件 5. 关闭浏览器 注意:由于京东登录页面可能有多个,我们选择直接打开京东首页,然后跳转到登录页面(或者直接打开登录页面)。根据引用[4],我们可以使用一个特定的扫码登录页面。 引用[4]中提到的步骤:让Selenium启动浏览器,打开京东的扫码登录页面(例如:https://passport.jd.com/new/login.aspx?),然后等待扫码。 我们参考引用[4]的实例代码。 但是注意:引用[4]提到了将驱动放在python解释器所在的文件夹,但更常见的做法是将驱动放在系统PATH路径或者指定路径。 我们将编写一个示例代码,并添加必要的注释。 由于用户可能需要后续使用cookie进行爬取,我们保存cookie为json文件。 另外,考虑到扫码登录后可能会有验证码(如引用[2]所述),我们的代码可能需要处理验证码。但根据引用[2],如果遇到验证码,需要手动输入。因此,我们可以在代码中暂停,等待用户手动输入验证码(如果有的话)。不过,在扫码登录过程中,验证码通常出现在输入账号密码时,扫码登录可能不会出现?但为了保险,我们也可以考虑这种情况。 然而,引用[4]的完整实例中可能已经处理了这些情况,但我们没有具体的代码内容。因此,我们将根据常见的Selenium操作来编写。 具体步骤: 1. 访问京东登录页面(使用扫码登录标签页) 2. 程序等待,直到检测到页面跳转(即登录成功)或者等待用户扫码并手动处理验证码(如果有的话) 3. 获取cookie并保存。 我们使用以下登录URL:'https://passport.jd.com/new/login.aspx' 在京东登录页面,默认是账号密码登录,我们需要切换到扫码登录。因此,我们需要定位到扫码登录的标签并点击。 页面元素分析(可能会变化,所以需要根据实际情况调整): 扫码登录标签可能有一个id或class,例如:'login-tab-r'(根据历史经验,但需要验证) 因此,步骤调整为: 1. 打开登录页面 2. 点击切换到扫码登录(这样二维码才会显示) 3. 等待二维码出现(可以等待二维码图片加载) 4. 然后等待登录成功(检测当前URL变化或者出现某个登录成功的元素,例如用户头像) 由于二维码是动态加载的,我们可能需要等待一段时间。 等待策略:使用显式等待(WebDriverWait) 考虑到可能的变化,我们尽量使用健壮的选择器。 参考引用[4]的实例,我们假设它已经实现了这些步骤,但具体代码未知。因此,我们根据经验编写。 示例代码: 注意:需要根据用户使用的浏览器配置驱动。这里以Edge为例(引用[4]使用Edge),但也可以使用Chrome。 我们将编写一个函数,完成登录并保存cookie。 由于用户可能需要多次运行,第一次登录后保存cookie,以后可以直接使用cookie(但注意cookie有效期,如引用[2]所述)。 但本次任务只关注扫码登录并获取cookie。 开始编写代码:</think>### 京东扫码登录 Python 实现代码 以下是使用 Selenium 实现京东扫码登录的完整代码方案,包含 cookie 保存功能: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time import json import os def jd_qrcode_login(): # 浏览器配置 (以Edge为例) options = webdriver.EdgeOptions() options.add_argument("--disable-blink-features=AutomationControlled") options.add_experimental_option("excludeSwitches", ["enable-automation"]) # 初始化浏览器 (需提前下载对应版本的驱动) driver = webdriver.Edge(options=options) driver.maximize_window() # 最大化窗口 try: # 打开京东登录页面 driver.get("https://passport.jd.com/new/login.aspx") # 切换到扫码登录标签 qrcode_tab = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, ".login-tab-r")) ) qrcode_tab.click() # 等待二维码加载 qrcode = WebDriverWait(driver, 15).until( EC.visibility_of_element_located((By.CSS_SELECTOR, ".qrcode-img img")) ) print("二维码已加载,请使用京东APP扫码...") # 等待登录成功 (检测用户头像出现) WebDriverWait(driver, 120).until( # 最长等待2分钟 EC.presence_of_element_located((By.CSS_SELECTOR, ".nickname")) ) print("登录成功!") # 获取并保存cookies cookies = driver.get_cookies() with open("jd_cookies.json", "w") as f: json.dump(cookies, f) print("Cookies已保存至jd_cookies.json") return True except Exception as e: print(f"登录失败: {str(e)}") return False finally: driver.quit() if __name__ == "__main__": if jd_qrcode_login(): print("登录流程完成") else: print("登录流程异常") ``` ### 关键步骤说明 1. **环境准备**: - 安装依赖:`pip install selenium` - 下载浏览器驱动(根据浏览器版本选择): - [Edge 驱动](https://developer.microsoft.com/zh-cn/microsoft-edge/tools/webdriver/) - [Chrome 驱动](https://chromedriver.chromium.org/downloads) - 将驱动放在系统PATH路径或Python安装目录 2. **登录流程**: ```mermaid graph TD A[打开登录页面] --> B[切换到扫码登录] B --> C[显示二维码] C --> D{用户扫码} D -->|成功| E[检测登录状态] E --> F[保存Cookies] D -->|失败| G[超时处理] ``` 3. **Cookie 使用**: ```python def load_cookies(driver): with open("jd_cookies.json", "r") as f: cookies = json.load(f) driver.get("https://www.jd.com/") for cookie in cookies: driver.add_cookie(cookie) driver.refresh() # 刷新页面生效 ``` ### 注意事项 1. **安全提示**: - Cookie 包含敏感会话信息,需妥善保管 - 不要将 `jd_cookies.json` 提交到公开仓库 2. **常见问题处理**: - **二维码不显示**:检查浏览器驱动版本是否匹配 - **登录超时**:增加 `WebDriverWait` 的等待时间 - **验证码拦截**:手动处理首次登录的验证码[^2] - **Cookie 失效**:京东 Cookie 有效期约1-7天,需重新登录[^3] 3. **优化建议**: ```python # 添加无头模式选项(后台运行) options.add_argument("--headless=new") # 添加用户代理伪装 options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...") ``` ### 应用场景 1. 自动化抢购脚本 2. 京东数据爬虫 3. 价格监控系统 4. 订单管理工具[^4] > 提示:京东会定期更新反爬机制,建议关注登录页面DOM结构变化并及时调整选择器[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值