私は現在、ウェブサイトにログインしようとしています、そして、私のユーザープロフィールから少し詳細(ニュース記事のリスト)をスクラップしています。大学のプロジェクトのために
私はPythonの初心者ですが、他のいくつかのウェブサイトにこれを前にしました。私の最初の2つのアプローチでは、異なるHTTPエラーが発生します。リクエストが送信されているヘッダーに問題があると考えましたが、このサイトのログインプロセスに関する理解は不十分です。
これは、ログインページです:http://seekingalpha.com/account/login
私の最初のアプローチは、次のようになります。
import requests
with requests.Session() as c:
requestUrl ='http://seekingalpha.com/account/orthodox_login'
USERNAME = 'XXX'
PASSWORD = 'XXX'
userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36'
login_data = {
"slugs[]":None,
"rt":None,
"user[url_source]":None,
"user[location_source]":"orthodox_login",
"user[email]":USERNAME,
"user[password]":PASSWORD
}
c.post(requestUrl, data=login_data, headers = {"referer": "http://seekingalpha.com/account/login", 'user-agent': userAgent})
page = c.get("http://seekingalpha.com/account/email_preferences")
print(page.content)
これは "403禁止"
私の第二のアプローチは、次のようになり、その結果:
from requests import Request, Session
requestUrl ='http://seekingalpha.com/account/orthodox_login'
USERNAME = 'XXX'
PASSWORD = 'XXX'
userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36'
# c.get(requestUrl)
login_data = {
"slugs[]":None,
"rt":None,
"user[url_source]":None,
"user[location_source]":"orthodox_login",
"user[email]":USERNAME,
"user[password]":PASSWORD
}
headers = {
"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Language":"de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4",
"origin":"http://seekingalpha.com",
"referer":"http://seekingalpha.com/account/login",
"Cache-Control":"max-age=0",
"Upgrade-Insecure-Requests":1,
"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36"
}
s = Session()
req = Request('POST', requestUrl, data=login_data, headers=headers)
prepped = s.prepare_request(req)
prepped.body ="slugs%5B%5D=&rt=&user%5Burl_source%5D=&user%5Blocation_source%5D=orthodox_login&user%5Bemail%5D=XXX%40XXX.com&user%5Bpassword%5D=XXX"
resp = s.send(prepped)
print(resp.status_code)
このアプローチでは、ヘッダーを準備しようとしていました私のブラウザがそうするのとまったく同じです。申し訳ありません。これによりHTTPエラー400が発生します。
誰かがアイデアを持っていますか、何が問題になりましたか?おそらくたくさん。
Webサイトは識別が含まれている、彼らのログインフォームに隠しフィールドを追加することにより、ボットから身を守るためにしてみてくださいコード。あなたが識別コードを取得しなければ、彼らはあなたを受け入れることはできません。最初にログインページを取得し、隠されたフィールドを見つけ、それをコピーしてリクエストを投稿する必要があります。これにはバリエーションがあります。したがって、手動でログインするときにブラウザが送信するリクエストの順序を注意深く検討してください。 – Cyb3rFly3r
ありがとう、はい私は他のウェブサイトがこれを行うのを見ました。しかし、私は公式のデータでこのようなトークンや何かを識別することができませんでした。見てください:http://pasteboard.co/eoXubQx.png – MCH
'Mechanize'モジュールを試しましたか? 'requests'モジュールはあなたの唯一の選択肢ですか? – estebanpdl