1

キャンペーン モニターにログインして、メール キャンペーンのパフォーマンスに関連するページからデータを取得しようとしています。

アクセスしようとしているページの「ログイン保護された」URL は次のようになります。

https://mycompany.createsend.com/campaigns/reports/lists/DFGDF987GD98F7GD?s=BCV98B5XF54BVC54BC

Web ブラウザーでそのページにアクセスすると (ここで試してください)、ログイン ページにリダイレクトされます。このページ自体は次のような URL です。

https://login.createsend.com/l/98SDF76DS87F68S/DFGDF987GD98F7GD?ReturnUrl=%2Fcampaigns%2Freports%2Flists%2FBCV98B5XF54BVC54BC%3Fs%3BCV98B5XF54BVC54BC&s=7DS6F87S6DF876SDF76

これを解決しようとして収集したことは、セッションを開き、リダイレクト URL で認証してから、(認証済みセッションを使用して) 実際に必要な URL を要求する必要があるということです。

これを達成するために私が使用しているコードは次のとおりです。

payload = {
    'username': 'myUsername',
    'password': 'myPassword',
}

redURL = 'https://login.createsend.com/l/98SDF76DS87F68S/DFGDF987GD98F7GD?ReturnUrl=%2Fcampaigns%2Freports%2Flists%2FBCV98B5XF54BVC54BC%3Fs%3BCV98B5XF54BVC54BC&s=7DS6F87S6DF876SDF76'

with requests.Session() as s:
    p = s.post(redURL, data=payload)

    # This prints the "success" message I've pasted below
    print p.content

    r = s.get('https://mycompany.createsend.com/campaigns/reports/lists/DFGDF987GD98F7GD?s=BCV98B5XF54BVC54BC')

    # This prints the HTML of the login page again, as if I'm not authenticated
    print r.content

セッションの最初の POST 後の「成功」応答は次のとおりです。

{"MultipleAccounts":false,"LoginStatus":"Success","SiteAddress":"https://mycompany.createsend.com","ErrorMessage":"","SessionExpired":false,"Url":"https://mycompany.createsend.com/login?Origin=Marketing\u0026ReturnUrl=%2fcampaigns%2freports%2flists%2f92D2FBCV98B5XF54BVC%3fs%7DS6F87S6DF876SDF76\u0026s=2FBCV98B5XF54BVC","DomainSwitchAddress":"https://mycompany.createsend.com","DomainSwitchAddressQueryString":null,"NeedsDomainSwitch":false}

セッションの 2 番目のリクエストが、ページの認証済みバージョン (つまり、探しているデータを含むページ) の HTML ではなく、ログイン ページの HTML を出力する理由を教えてください。

4

0 に答える 0