请求使用“请求”模块传递数据

时间:2015-04-14 19:51:47

标签: python python-2.7

我试图向我的大学网页请求检索我的成绩。 我的成绩的页面需要登录"" http://www4.uva.br/UniversusNet/Seguro/Login.aspx?ReturnUrl=%2fUniversusNet%2fNotasFaltasTotais.aspx"在那之后 该页面将我重新定向到了成绩。

我想在我制作的app上打印我的成绩。 到目前为止我制作了这个代码来打印页面但是当我执行返回时出现错误407:代理身份验证 我现在想要的是我想念的......

from requests import *

payload = {'__EVENTTARGET':'','__EVENTARGUMENT':'','__VIEWSTATE':'/wEPDwULLTE4NzU1ODgxNTkPZBYCZg9kFgICAw9kFgICCQ9kFgICAQ9kFgICAQ9kFgICAQ8QZGQWAGQYAQU2Y3RsMDAkRm9ybXVsYXJpb0NvbnRlbnRQbGFjZUhvbGRlciRFc3RhZG9UZWxhTXVsdGlWaWV3Dw9kZmT14eU493cBliuPCSv6TJQbGDKjrA=='
                  ,'__VIEWSTATEGENERATOR':'7C9DFC57'
                  ,'ctl00$FormularioContentPlaceHolder$UsuarioTextBox':"@@@@@"
                  ,"ctl00$FormularioContentPlaceHolder$SenhaTextBox":"@@@@@"
                  ,'ctl00$FormularioContentPlaceHolder$EntrarButton':'Entrar'}

requestheaders = {
    'Accept'                    : 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Encoding'           : 'gzip,deflate',
    'Accept-Language'           : 'pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4',
    'Cache-Control'             : 'max-age=0',
    'Proxy-Connection'          : 'keep-alive',
    'Content-Type'              : 'application/x-www-form-urlencoded',
    'Host'                      : 'www4.uva.br',
    'Origin'                    : 'http://www4.uva.br',
    'Cookie'                    : '',
    'Pragma'                    : 'no-cache',
    'Referer'                   : 'https://web.iress.com.au/html/LogonForm.aspx',   
    'User-Agent'                : 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML,  like Gecko) Chrome/##ADRESSS AS ABOVE## Safari/537.36'

    }

with session() as sesh:

    LOGINURL = 'http://www4.uva.br/UniversusNet/Seguro/Login.aspx?ReturnUrl=%2fUniversusNet%2fNotasFaltasTotais.aspx'
    sesh.get(LOGINURL,proxies={"http":"xxxxxxx:xxxx"},auth=("xxxxxxx","xxxxxxxx")) #Get request to get the session ID cookie
##    sessionID = sesh.cookies['ASP.NET_SessionId'] #Grab session ID value
##    sessionIDname = 'ASP.NET_SessionId='
##    sessionIDheader = str(sessionIDname + sessionID) #Prepare session ID header
##    requestheaders['Cookie'] = sessionIDheader # Add session ID header to requestheaders dictionary


    response = sesh.post('http://www4.uva.br/UniversusNet/Seguro/Login.aspx?ReturnUrl=%2fUniversusNet%2fNotasFaltasTotais.aspx', data=payload,  headers=requestheaders)

    print(response.headers)
    print(response.content)

1 个答案:

答案 0 :(得分:0)

尝试直接将代理信息设置到会话中(例如):

from requests.auth import HTTPProxyAuth


sesh.proxies = {
    "http": "http://www4.uva.br:8080",  # MAKE SURE THE DATA IS CORRECT !!!
}
sesh.auth = HTTPProxyAuth("user", "pwd")

sesh.get(LOGINURL)