2016-11-13 407 views
1

我試圖登錄和刮一個工作網站,併發送任何關鍵詞時,我發現了通知。我想我已經正確地跟蹤了fepath的「xpath登錄[iovation ]」但我不能提取的價值,這是我迄今所做的登陸如何使用python請求登錄到網站

import requests 
from lxml import html 
header = {"User-Agent":"Mozilla/4.0 (compatible; MSIE 5.5;Windows NT)"} 
login_url = 'https://www.upwork.com/ab/account-security/login' 
session_requests = requests.session() 
#get csrf 
result = session_requests.get(login_url) 
tree=html.fromstring(result.text) 
auth_token = list(set(tree.xpath('//*[@name="login[_token]"]/@value'))) 
auth_iovat = list(set(tree.xpath('//*[@name="login[iovation]"]/@value'))) 
# create payload 
payload = { 
    "login[username]": "[email protected]", 
    "login[password]": "pa$$w0rD", 
    "login[_token]": auth_token, 
     "login[iovation]": auth_iovation, 
     "login[redir]": "/home" 
} 

#perform login 
scrapeurl='https://www.upwork.com/ab/find-work/' 
result=session_requests.post(login_url, data = payload, headers = dict(referer = login_url)) 
#test the result 
print result.text 

這是表格數據的屏幕快照,當我登錄成功 enter image description here

+0

運行瀏覽器,而'的JavaScript '並檢查你是否看到這個值 - 也許這個值是由'JavaScript'添加的,並且請求不運行'JavaScript' – furas

+0

感謝furas,當我禁用javascript時,loginp [iovation]的值字段消失了 –

+0

你可以不用javascript登錄?在這個頁面上,我看到名字爲[account-security-ui-combined.js]的文件(https://www.upwork.com/ab/account-security/static-assets/js/account-security-ui-combined .js文件?3482da8?3482da8)。也許它可以幫助找到這些代碼。或者你將不得不使用'Selenium'來控制運行JavaScript的瀏覽器。 – furas

回答

0

這是因爲upworks使用一種叫iOvation(https://www.iovation.com/)減少欺詐。 iOvation使用您的設備/瀏覽器的數字指紋,通過login [iovation]參​​數發送。

如果你看看你的網站上加載的javascripts,你會發現兩個JavaScript從iesnare.com域加載。此域名和其他許多人均由iOvaiton擁有,以放棄第三方JavaScript以識別您的設備/瀏覽器。

我想如果您從成功登錄中複製字符串並將其與所有http標題一起發送,就如同在python代碼中包含瀏覽器代理那樣,您應該okie。

0

你肯定結果取2XX代碼

當我這個代碼result = session_requests.get(login_url) ..its取我403個狀態碼,這意味着我不會給自己LOGIN_URL