如何使用Python网页抓取技术实现Google账号登录
谷歌登录爬取问题排查与解决方案
核心问题分析
你当前代码的逻辑存在根本性错误,导致无法正常登录:
- 混用了
requests.Session和selenium webdriver两个独立的请求实例,二者的Cookie、登录态完全不互通,你用requests提交登录请求的结果不会同步到selenium中,反之亦然 - Google登录表单有大量动态生成的校验参数(csrf令牌、会话标识、防机器人校验字段等),你仅提交
email和password两个字段的POST请求本身就是无效的,无法通过Google的后端校验 - 代码逻辑混乱:用requests发送POST请求后,直接读取未进行任何操作的selenium当前地址重复访问,全程没有完成实际的登录流程
可行解决方案
优先推荐全用selenium模拟人工操作登录,避免复杂的参数抓包工作:
- 替换原生selenium为
undetected-chromedriver,绕过Google的自动化工具检测 - 直接通过selenium定位页面元素完成输入、提交操作,不需要引入requests发送请求
- 登录完成后直接读取selenium的页面源码做解析即可
示例代码:
import time from bs4 import BeautifulSoup import undetected_chromedriver as uc driver = uc.Chrome() # 打开谷歌目标页面地址 driver.get(你的目标url) time.sleep(2) # 输入邮箱 email_input = driver.find_element('id', 'identifierId') email_input.send_keys('你的邮箱地址') # 点击下一步 driver.find_element('xpath', '//*[@id="identifierNext"]/div/button').click() time.sleep(3) # 输入密码 pass_input = driver.find_element('xpath', '//*[@id="password"]/div[1]/div/div[1]/input') pass_input.send_keys('你的密码') # 点击登录 driver.find_element('xpath', '//*[@id="passwordNext"]/div/button').click() time.sleep(5) # 登录完成后直接拿页面源码解析 soup = BeautifulSoup(driver.page_source, 'html.parser') print(soup.prettify())
注意事项
- Google账号风控严格,频繁用自动化工具登录会触发临时限制,建议测试时用小号
- 页面元素的定位规则可能会随谷歌页面更新变化,运行失败时可以重新检查元素的id、xpath
- 不推荐用纯requests实现谷歌登录,需要匹配浏览器的请求头、TLS指纹、所有动态表单参数,实现成本极高
内容的提问来源于stack exchange,提问作者Inês Jorge
相关产品推荐
相关产品推荐

