1

誰かがPythonの仕事をしてこれらの値にログインするのを手伝ってもらえますか? 下

  <div class='field'>
  <label for='login'>Login</label><br/>
  <input id='login' name='login' size='16' type='text' />
</div>
<div class='field'>
  <label for='login_password'>Password</label><br/>
  <input id='login' name='password' size='16' type='password' />
</div>
<div class='field'>
  <input type='submit' value='Login' />
</div>

このコードを何百万回も試すのにうんざりしています

import sys,os,time,subprocess,threading,readline,fileinput, urllib, urllib2, cookielib
usernameInsnort = ''
passwordInsnort = ''
print 'can you pleasse insert your snort user name:'
usernameStr = raw_input(usernameInsnort)
print 'can you please insert your snort password:'
passwordStr = raw_input(passwordInsnort)
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
login_data = urllib.urlencode({'login' : usernameStr, 'login' : passwordStr})
opener.open('https://www.snort.org/login', login_data)
resp = opener.open ('https://www.snort.org/downloads/2142')
print resp.read()

ありがとう

4

1 に答える 1

0

メソッドが機能しない理由をすばやく伝えるために必要な、ソースからの HTML の引用を少し見逃しています。

<form action="https://www.snort.org/session" 
    method="post">
    <input name="authenticity_token" 
        type="hidden" value="y4xmS1IJatlRmkFz4GT4OrBuE57cBCtHj0ka0UPg9sw=" />
    <fieldset> 
        [Snip - You already provided this bit]
    </fieldset>
</form>

この HTML から、2 つの問題を特定できます。

  • フォームは投稿され/sessionません/login
  • authenticity_tokenクロス サイト リクエスト フォージェリ (CSRF) を防ぐためのフィールドがあります ユーザー セッションがまだセットアップされていないためか、問題にはならないようです

あなたが提供する元のPaythonコードから、この行に注意してください

login_data = urllib.urlencode({'login' : usernameStr, 'login' : passwordStr})

別の問題が特定された場合

  • パスワードはログイン時にエンコードされるため、パスワードの値をエンコードすることはありません

したがって、これらすべてを考慮して、いくつかの変更を加えることでコードを機能させることができます

import sys,os,time,subprocess,threading,readline,fileinput, urllib, urllib2, cookielib
usernameInsnort = ''
passwordInsnort = ''
print 'can you pleasse insert your snort user name:'
usernameStr = raw_input(usernameInsnort)
print 'can you please insert your snort password:'
passwordStr = raw_input(passwordInsnort)
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 

# Changed the second dictionary item to password instead of login
login_data = urllib.urlencode({'login' : usernameStr, 'password' : passwordStr})

# Changed the URL opened to that the login form submits to
opener.open('https://www.snort.org/session', login_data)

resp = opener.open ('https://www.snort.org/downloads/2142')
print resp.read()
于 2013-01-20T23:36:44.627 に答える