Python を使用して職場の Web サイトにアクセスして解析しようとしています。サイトの認証は siteminder を介して行われるため、通常の urllib/urllib2 ユーザー パスワードは機能しません。誰もそれを行う方法を知っていますか? ありがとうございます
3 に答える
これをやっただけです-私はそれが古いことを知っています-しかし、他の誰かがこれをやろうとしているなら-リクエストライブラリを使用してください。以前に C# でこれを行ったことがあり、膨大な量のコードを使用していましたが、会社のサイトマインダー システムにログインするのに必要なのはこれだけです。request.session() オブジェクトは、リダイレクト、ヘッダー、および Cookie を保持します。そのため、心配する必要があるのは、ログイン フォームを投稿することだけです。変数は環境によって異なると思いますが、プロセスは同じです。
output.text は、解析したいターゲットページの本文になります。これを xpath などにすることができます。
import requests
r = requests.session()
postUrl = "https://loginUrl"
params = { 'USER': 'user',
'PASSWORD': 'pass',
'SMENC': 'ISO-8859-1',
'SMLOCALE': 'US-EN',
'target': '/redir.shtml?GOTO=redirecturl}',
'smauthreason': '0' }
r.post(postUrl, data=params)
getUrl = "http://urlFromBehindLogInYouWantDataFrom"
output = r.get(getUrl)
print(output.text)
まず最初に、siteminder を介して認証するときに何が起こっているかを調べる必要があります。おそらくそれに関するドキュメントがありますが、見つけるのはそれほど難しくありません.ChromeまたはSafariの開発者ツールの[ネットワーク]タブには、すべてのネットワーク要求のHTTPヘッダーとCookieなど、必要なすべての情報があります. Firebugもそれを提供できます。
認証プロセスの各ステップで何が起こっているかを明確に理解したら、あとはスクリプトで同じ動作を再現するだけです。urllib2はCookieとヘッダーをサポートしています。urllib2 が提供していないものが必要な場合は、おそらくPycURLが対応します。