1

私はrequests libraryを使ってphpBBフォーラムに投稿しようとしています。Pythonは302に従わないライブラリを要求しますか?

self.r = requests.session() 
d = self.r.get('http://examplephpbbforum.com/community/posting.php?mode=reply&f=' + forumid + '&t=' + topicid) 

sid = stringBetween('style.php?sid=', '&id=2', d.content) 

lastclick = stringBetween('lastclick" value="', '" />', d.content) 
creation_time = stringBetween('creation_time" value="', '" />', d.content) 
form_token = stringBetween('form_token" value="', '" />', d.content) 
topic_cur_post_id = stringBetween('topic_cur_post_id" value="', '" />', d.content) 
payload = {'addbbcode20':'100', 'message':message, 'topic_cur_post_id':topic_cur_post_id, 'lastclick':lastclick, 'post':'Submit', 'attach_sig':'on', 'creation_time':creation_time, 'form_token':form_token} 
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1', 'Referer':'http://examplephpbbforum.com/community/posting.php?mode=reply&f=' + forumid + '&t=' + topicid, 'Content-Type':'application/x-www-form-urlencoded', 'Connection':'Keep-alive', 'Host':'examplephpbbforum.com', 'Accept-Language':'en-us,en;q=0.5', 'Accept-Encoding':'gzip, deflate', 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'} 

d = self.r.post('http://examplephpbbforum.com/community/posting.php?mode=reply&f=' + forumid + '&sid=' + sid + '&t=' + topicid, data=payload, headers=headers, allow_redirects=True) 

は、その後、私はトピックが応答した文字列を検索することによって、正常投稿されたかどうかを確認します。

私のコードは次のようになります。

トラフィックの流れは、最初の投稿の後に、リクエストが次にページに正常に投稿されたページに続く302リダイレクトがあります。

場合によっては(50回に1回)動作することがありますが、通常は機能しません。応答は最初のget要求からのページだけです。 (返信ページを投稿する)

毎回、投稿されたメッセージにリダイレクトする必要がありますが、それは何らかの理由ではありません。

トラフィックをwiresharkでスニッフィングすると、通常はリダイレクト先のURLで応答が送信されるようですが、何か問題が発生しているようです。

これが最初に失敗する原因と解決方法を知っていますか?

答えて

3

リクエストがリダイレクトを処理するときに適切なHTTPメソッドを使用していないために発生したと考えられます。このバグは2012年3月30日に修正されました。詳細は、#269号(後続のリダイレクトリクエストの種類を修正)を参照してください。

関連する問題