1

投稿リクエストによる認証の簡単なコードがあります。サーバーは、リクエストごとに javax.faces.ViewState=123456784356754 のような「javax.faces.ViewState」変数を生成します

import requests
import re


global_headers = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0',
                   'Accept': 'application/xml, text/xml, */*; q=0.01',
                   'Referer': 'http://serrver.com/login/'}

req = requests.Session(headers=global_headers)

def javalue_parser():
        javalue = re.findall(r'name="javax.faces.ViewState" id="javax.faces.ViewState" value="(.*?)"')
        print javalue[0]
        return javalue



my_post_req = req.post('http://server.com/login/',
                 data={'phone': '+11(123)456-78-91', 
                       'loginForm': 'loginForm',
                       'javax.faces.ViewState': "%s" % javalue_parser()
                        })

いつもエラーが出ます

Traceback (most recent call last):
  File "rework_sms.py", line 28, in <module>
    'javax.faces.ViewState': "%s" % javalue_parser()
  File "test.py", line 19, in javalue_parser
    javalue = re.findall(r'name="javax.faces.ViewState" id="javax.faces.ViewState" value="(.*?)"')
TypeError: findall() takes at least 2 arguments (1 given)

必要な議論は何ですか?

4

1 に答える 1

1

re.findallのドキュメントを参照してください

re.findall(pattern、string、flags = 0)string内
のパターンの重複しない一致をすべて、文字列のリストとして返します。文字列は左から右にスキャンされ、一致したものが見つかった順序で返されます。パターンに1つ以上のグループが存在する場合は、グループのリストを返します。パターンに複数のグループがある場合、これはタプルのリストになります。空の試合は、別の試合の開始に触れない限り、結果に含まれます。

于 2012-05-30T16:25:07.833 に答える