python自动登录某乎、某宝、某东等网站(自学,可能不全面,笔者亲测成功,仅供参考)


需要工具:anaconda集成环境/python、pycharm、playwright第三方库。

难点:大型网站具有优秀的反爬机制,传统验证码以及滑块验证码是阻碍目标的最大敌手。

总思路:大型网站都有免登录措施(登录过后,短时间内第二次登录免登录)。

依靠的是登录后服务器与浏览器共同保存的state状态,我们拿到指定网站的state状态后。

即可实现免密登录,但是state状态可能会失效,失效后需要重新获取此state状态。


获取state状态:

与正常免密登录一样,我们需要先手动登录一次,目的是拿到state信息

在这里笔者附上源码,并做了注释

from playwright.sync_api import Playwright, sync_playwright, expect


def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)#创建浏览器,并指定创建的浏览器可见
    context = browser.new_context()#由浏览器创建一个上下文,playwright特有
    page = context.new_page()#由上下文创建网页
    page.goto("指定网站的登录网址")
    page.wait_for_timeout(20000)#单位ms,即提供20秒时间用于手动登录
    # ---------------------
    context.storage_state(path="state.json")#利用上下文的state保存方法保存state信息,命名为“state.json”
    context.close()#关闭上下文
    browser.close()#关闭浏览器


with sync_playwright() as playwright:
    run(playwright)#运行

自动免密登录:

思路很简单,利用刚刚收集到的state信息去创建上下文,即可实现免密登录

这里笔者同样附上源码,供大家学习

from playwright.sync_api import sync_playwright


def run():
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=False)#仍然是以有头方式创建浏览器我窗口
        context = browser.new_context(storage_state="state.json")#创建一个加载了state信息的上下文
        page = context.new_page()#根据此上下文创建一个页面
        page.goto('指定网站网址')#用此页面去指定网站,即可实现自动免密登录



        page.wait_for_timeout(10000)#停止运行10秒,可以手动点击其他按钮,验证是否登录成功

        context.close()
        browser.close()


if __name__ == '__main__':
    run()#运行

如果读者朋友们有看不懂的地方,或者想和笔者交流思路,都可以私信笔者。

笔者也在自学,有很多不懂的地方,希望能和大家一起共同学习,进步。

你可能感兴趣的:(playwright,python,selenium,自动化)