3

ポップアウト フォームのデータをローカル Web サイトに投稿しようとしています。これを行うために、サイトから提供されるリクエスト ヘッダーとデータおよび Cookie 情報をエミュレートしています。(注: コードから電子メールとパスワードを大幅に編集していますが (明らかな理由で)、他のすべてのコードは同じままです。)

Cookie、ヘッダー、リクエスト、データなどの複数の順列を試しました。さらに、ネットワークインスペクターで Cookie と予想されるヘッダーとデータを確認しました。リクエストのサンプル コードを使用して、簡単に Cookie を設定できます。私のコードが実際のサイトで機能しない理由を説明することはできません。詳細については、次のコードを参照してください。

import requests
import robobrowser
import json

br = robobrowser.RoboBrowser(user_agent="Windows Chrome",history=True)

url = "http://posting.cityweekly.net/gyrobase/API/Login/CookieV2"
data ={"passwordChallengeResponse":"....._SYGwbDLkSyU5gYKGg",
        "email": "<email>%40bu.edu",
        "ttl":"129600",
        "sessionOnly": "1"
        }
headers = {
    "Origin": "http://posting.cityweekly.net",
    "Accept-Encoding": "gzip, deflate",
    "Accept-Language": "en-US,en;q=0.8,ru;q=0.6",
    "User-Agent": "Windows Chrome", #"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36",
    "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    "Referer": "http://posting.cityweekly.net/utah/Events/AddEvent",
    "X-Requested-With": "XMLHttpRequest",
    "Connection": "keep-alive",
    "Cache-Control": "max-age=0",
    "Host":"posting.cityweekly.net"

}
cookie = {"Cookie": "__utma=25975215.1299783561.1416894918.1416894918.1416897574.2; __utmc=25975215; __utmz=25975215.1416894918.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __qca=P0-2083194243-1416894918675; __gads=ID=e3b24038c9228b00:T=1416894918:S=ALNI_MY7ewizuxK0oISnqPJWlLDAeKFMmw; _cb_ls=1; _chartbeat2=D6vh2H_ZbNJDycc-t.1416894962025.1416897589974.1; __utmb=25975215.3.10.1416897574; __utmt=1"}
r = br.session.get(url, data=json.dumps(data), cookies=cookie, headers=headers)
print r.headers
print [item for item in r.cookies.__dict__.items()]

Cookie オブジェクトを出力し、Cookie 属性 (辞書) が空であることに注意してください。

4

1 に答える 1

1

サイトにログインするには、POST を実行する必要があります。これを行うと、Cookie は正しい値になると思います (100% ではありません...)。この投稿では、Cookie を適切に設定する方法を明確にしています。

注: RoboBrowser の外部で使用しない限り、リクエストの追加のインポートを行う必要はないと思います。

于 2014-12-26T03:04:27.310 に答える