Pythonでrequestsを使用してログインしたい。
PinterestというwebサイトにPythonを使用しログインまでできたのですが、セッションが上手く保たれていないのか。実行したいことまで上手く行きません。
やりたいこと
https://www.pinterest.jp/r/pin/554505772869102844/4995915543595742901/ab9290928e62760b540f32156fb9686925897abcbda51275fe2866dd3442d330
このURLにアクセスするとリダイレクトされて下記のURLに飛びます。
https://www.behance.net/gallery/67141435/X-O-Highlight-Messenger
このURLをrequestsの.url
で取得したいのですが、Pinterestにログインなしでアクセスするとリダイレクトされない仕様になっています。
なので下記のコードでログインまで行きました。
import requests
ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
headers = {'User-Agent': ua}
payload = {'username_or_email':'xxxxx@mail.com', 'password':'xxxxxxxxx'}
login_url = 'https://accounts.pinterest.com/v3/login/handshake/'
def login(login_url, payload):
s = requests.Session()
p = s.post(login_url, data=payload)
r = s.get('https://www.pinterest.jp/r/pin/554505772869102844/4995915543595742901/ab9290928e62760b540f32156fb9686925897abcbda51275fe2866dd3442d330')
print(p.status_code)
print(r.url)
login(login_url, payload)
status_codeは200とログインはできているようです。
助けて頂きたい事
ここで問題にはまっています。一度、ブラウザ側でアクセスした後このプログラムを実行すると上手くリダイレクト先のURLを取得できます。
しかし、しばらく時間を置くとプログラムからログインはできてもリダイレクトされません。
毎回、ブラウザでログイン後にプログラムを走らせるのは手間が掛かるのでプログラムのみで動作させたいです。
最後に
cookieを付与して(返ってきたcookieをそのまま返す?)アクセスしてみたり、色々やってみましたがもうわかりません。
ブラウザに保存される何かをサーバに送り返してセッションか何かを保った状態をキープしないといけないと考えているのですが、何かわかりません。デベロッパーツールのNetworkを見たりして見たのですが、どこに注目してよいのか分かりません。
なので質問させて頂きます。
seleniumはできる限り使用したくないです。
贅沢いって申し訳ありません。
ご教授お願いします。