我試圖讓腳本訪問一個網頁。它加載第一頁,找到登錄表單,填寫並提交。該網站的工作原理與Facebook一樣,如果您已經將cookie重定向到您的供稿列表,那麼您的cookie已經被重定向到登錄頁面。 但作爲迴應,我不明白另一頁,簡得到一個字符串這樣的:用機械化python登錄。返回的字符串
S1:1MEqkcRcZQ7x6adaszkZUQyRFRhCfXz1z:c2c8d18f12f50ab3e8daA1cf80a0d8b9f64e9d6684b8eb064dd76892d6134cde:1646683
它像4串用「:」隔開。第一我不知道是什麼。第二個是用戶名,第三個是我的哈希密碼(我想),最後一個是我的用戶ID。 在FF中進行測試後,我發現這是一個Javascript問題,如果您的瀏覽器沒有啓用Javascript,您在登錄後會得到該字符串。
這裏是我的代碼>
import mechanize
import urllib
import cookielib
# Browser
br = mechanize.Browser()
# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
# Browser options
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True )
br.set_handle_robots(False)
# Follows refresh 0 but not hangs on refresh > 0
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
# Want debugging messages?
br.set_debug_http(True)
br.set_debug_redirects(True)
br.set_debug_responses(True)
# User-Agent (this is cheating, ok?)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.3')]
# If the protected site didn't receive the authentication data you would
wallet = 'username'
password = 'password'
response = br.open('https://www.example.com/')
#html = response.read()
# Show the source
#print html
# or
#print br.response().read()
# Show the html title
print br.title()
#print response.read()
# Show the response headers
#print response.info()
# or
#print br.response().info()
# Show the available forms
for form in br.forms():
print "Form name:", form.name
print form
# Select the login form
br.select_form(nr=2)
# Let's login
#br.form['op'] = 'login'
br.form['login'] = wallet
br.form['password'] = password
response1 = br.submit()
print response1
print response1.read()
print "#######################"
cookie = cookielib.Cookie(version=0, name='PON', value="response1.read()", expires=365, port=None, port_specified=False, domain='https://www.example.com/', domain_specified=True, domain_initial_dot=False, path='/', path_specified=True, secure=True, discard=False, comment=None, comment_url=None, rest={'HttpOnly': False}, rfc2109=False)
cj.set_cookie(cookie)
response = br.open(https://www.example.com/)
因爲我不知道該字符串是什麼,我想這是一個Cookie,所以我試圖把我的Cookiejar,並試圖br.open(URL)再次,但它總是返回登錄頁面。 我必須複製網站的JavaScript在python中所做的,但到目前爲止我被困住了。 有什麼想法?我已經嘗試閱讀網站的源代碼,但我沒有找到導致我麻煩的腳本。它可能在頭標籤內嗎?我不知道。
你已經標記了3種語言,但只顯示一個,這是相關的,哪些不是? –
嘗試手動將referer頭添加到同一個域。 – YOU
我不記得添加PHP作爲標籤。只有JavaScript和python – georgesilva