【Day 21】- 你的爬虫还在用帐号密码进行登入? 带上 Session 吧!(实战 Selenium 自动点击 Instagram 好友贴文赞 1/2)

前情提要

前一篇带各位在 Selenium 中透过执行 JavaScript 语句达到向下卷动的效果。在每次爬取完成後都进行卷动更新载入的文章,并不重复爬取。

开始之前

今天要带各位实战一个自动按好友贴文爱心的小爬虫。当我们直接进到 https://www.instagram.com/ 会发现要输入帐号密码。

在程序当中直接写入帐号密码有一些危险性(不小心 git push 上去),有两个解决方法,将帐号密码写在环境变数,并在程序中去读取环境变数。另一个解决方法是,将登入过後的使用者 session 撷取下来,并在程序运行中以 cookies 的方式带上去。

预期效果

先使用 Edithiscookies 等工具将 cookies 上的使用者 session 汇出。

将使用者 session 导入至 selenium cookies 并重新整理。

不必输入帐号密码便可成功登入。

实作

首先先写个简单的程序用 selenium 开启 instagram 网页。

会发现需要进行登入。

from selenium import webdriver
from time import sleep
import json

if __name__ == '__main__':
    driver = webdriver.Chrome()
    driver.get('https://www.instagram.com/')

我们可以到 https://www.instagram.com/ 进行登入,并用 cookies 修改的扩充套件将 cookies 汇出。

接下来将 cookies 贴上到一个 JSON 档,可以只留下 name 与 value 即可。

再来,在我们的程序中读取该 JSON 档案,并写个 for-loop 将 cookie 们加入 Selenium,注意要在加入完成後 refresh。

from selenium import webdriver
from time import sleep
import json

if __name__ == '__main__':
    with open('cookies_jar.json') as f:
        cookies = json.load(f)
    driver = webdriver.Chrome()
    driver.get('https://www.instagram.com/')

    for cookie in cookies:
        driver.add_cookie(cookie)
    driver.refresh()

可以发现我们能够成功进行登入了。

结语

今天透过加入使用者 session 至 Selenium 当中,达到不须输入使用者帐号密码进行登入的效果。此技巧可以用在许多应用程序的爬取上面,例如说 facebook Discord 等等需要登入的应用程序都可以透过这个技巧来达到不须输入使用者帐号密码进行登入。

明日内容

明天会带各位加入自动点击 Instagram 中好友贴文赞的功能。

补充资料

Instagram: https://www.instagram.com/

Selenium with Python docs : https://selenium-python.readthedocs.io/

Selenium docs : https://readthedocs.org/projects/selenium-python/downloads/pdf/latest/


<<:  Day 22 盘点资料敏感度实作

>>:  [Day21] HTB Archetype

伸缩自如的Flask [day 18] Docker image化--运行篇

首先,我们可以先拉一下底层的image,再把我们的app内容叠上去,从终端机(cmd)打上: doc...

Day08 - 语音特徵撷取 - AFE

AFE 特徵是由欧洲电信标准协会所提出的。 AFE 论文参考连结: https://www.etsi...

Day 03:Android 开发工具

前言 在开始写 Android 之前,想先介绍如何提升写 code 的速度, 如果从现在开始习惯,并...

快速浏览文章的重点大进击

懒人包 此篇做个重点整理,原先是要写在EKS上操作EFS,但最近在测试发生一些问题,原先在七月的时候...

DAY28 - 来试试看 line notify吧

在前一篇把 line message api 缺点和难用的地方写出来後,其实也在找其他的替代品,有...