我想我已经正确地跟踪了字段"loginiovation“的值的xpath,但我无法提取该值,以下是我到目前为止所做的登录操作
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这是我成功登录时的表单数据屏幕截图

发布于 2016-12-15 16:49:32
这是因为upworks使用了一种叫做iOvation (https://www.iovation.com/)的东西来减少欺诈。iOvation使用您的设备/浏览器的数字指纹,这些指纹通过loginiovation参数发送。
如果您查看加载到您的站点上的javascript,您将发现两个从iesnare.com域加载的javascript。这个域名和许多其他域名归iOvaiton所有,可以删除第三方javascript来识别您的设备/浏览器。
我认为,如果您复制成功登录的字符串,并将其与所有http标头一起发送,就像python代码中的浏览器代理一样,您应该是you的。
发布于 2017-05-04 14:32:46
您确定结果正在获取2XX代码吗
当我执行此代码时,result = session_requests.get(login_url)..its会为我获取一个403状态代码,这意味着我不会使用login_url本身
发布于 2020-11-17 23:43:29
他们现在有了官方API,不需要抓取,只需注册API密钥即可。
https://stackoverflow.com/questions/40570728
复制相似问题