[Python] BeautifulSoupでjsessionidの取得 | Subaru's Husband

Subaru's Husband

python、linux、バイクなんかのネタを書きます。
一応security業界でご飯を食べてます。
備忘録がメインだと思うので、未来の自分が助かれば最高。

レスポンスからjsessionidを取り出して、貯めておいたURLのjsessionidと
置き換える必要があったんで試しに作ってみました。
でもこれだと、formのactionだけの場合に取得できないから、jsessionid=.*で正規表現かけて取得しないと。
BeautifulSoup使う必要なくなったじゃないか。

携帯サイトはCookie使えないし、トークン引き継がないとエラーになるサイトとかあるから大変だわ。
でもこれで大抵のサイトはログインしてクローリングできるはず。
後はinputフィールド自動判断したり、javascript解析やらかなぁ。

import re
import BeautifulSoup

html = '<a href="https://www.test.com/accounts/ServiceLogin;jsessionid=1234567?hl=ja&amp;continue=http://www.test.co.jp/" class="gb4">ログイン</a>'
soup = BeautifulSoup(html)

delimiter = ['"',"'",'&','?']
_r = re.compile('jsessionid=.*?[{0}|{1}|{2}|{3}]'.format('"',"'",'&','?'),re.IGNORECASE)

for input_tag in soup.findAll('a'):
_href = dict(input_tag.attrs)['href']
tmp = _r.search('r"{0}"'.format(_href))
_session = str(tmp.group())
print _session.rstrip(''.join(delimiter))
soup = BeautifulSoup(html)

delimiter = ['"',"'",'&','?']
_r = re.compile('jsessionid=.*?[{0}|{1}|{2}|{3}]'.format('"',"'",'&','?'),re.IGNORECASE)

for input_tag in soup.findAll('a'):
_href = dict(input_tag.attrs)['href']
tmp = _r.search('r"{0}"'.format(_href))
_session = str(tmp.group())
print _session.rstrip(''.join(delimiter))