如何使用python请求登录网站

时间:2016-11-13 04:56:45

标签: python web-scraping python-requests

我试图登录并抓取一个工作网站,并在发现某些关键词时向我发送通知。我想我已经正确地追踪了xpath的值为“登录[iovation]”,但我无法提取值,这是我到目前为止所做的登录

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]": "myemail@gmail.com", 
    "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

3 个答案:

答案 0 :(得分:0)

这是因为upworks使用名为iOvation(https://www.iovation.com/)的东西来减少欺诈。 iOvation使用您的设备/浏览器的数字指纹,通过login [iovation]参​​数发送。

如果您查看网站上加载的javascripts,您会发现从iesnare.com域加载了两个javascript。此域名和许多其他域名由iOvaiton拥有,以删除第三方JavaScript以识别您的设备/浏览器。

我认为如果你从成功登录中复制字符串并将其与所有http标题一起发送,包括python代码中的浏览器代理,你应该没问题。

答案 1 :(得分:0)

您确定结果是获取2XX代码

当我是这段代码result = session_requests.get(login_url)时...它取了一个403状态代码,这意味着我不打算登录_url

答案 2 :(得分:0)

他们现在拥有正式的API,无需抓取,只需注册API密钥即可。