2016-04-22 108 views
0

我正在使用我公司的Internet,並且需要訪問網頁以從中刪除數據。我正在使用Python請求模塊。我需要訪問的頁面是通過POST請求完成的。我的公司有一個代理。我可以使用requests.post()中的代理標誌通過代理。但是,有一個使用cookie的認證部分,我似乎無法完成。如何在使用POST請求時執行身份驗證部分?Python請求通過代理進行POST調用的身份驗證

我想使用如在此線程所描述的認證過程,但它不工作: Authentication and python Requests

代碼設置是這樣的:

import ssl 
from MyHtmlParser import MyHTMLParser 
from lxml import html 
import requests 
from bs4 import BeautifulSoup as bs 

def authenticate(s, url): 
    headers = {'USER_NAME': 'me', 'PASSWORD': 'mypassword', '_Id': 'submit'} 
    page=s.get(url) 
    soup=bs(page.content) 
    value=soup.form.find_all('input')[2]['value'] 
    headers.update({'value_name':value}) 
    auth = s.post(url, params=headers, cookies=page.cookies) 

post_url_finance = 'https://opsdata<company>com/scripts/finance/finance.exe' 
values_finance = {'EMPLOYEE_TOTAL': 'employeeId'} 

proxies = {'http': 'http://proxy-<company>.com'} 

page = requests.post(post_url_finance, data=values_finance, proxies=proxies) print page.content 

不過,我得到這個錯誤返回:

$ python postUsingRequests.py 
Traceback (most recent call last): 
    File "postUsingRequests.py", line 53, in <module> 
    page = requests.post(post_url_finance, data=values_finance, proxies=proxies) 
    File "C:\Python27\lib\site-packages\requests\api.py", line 109, in post 
    return request('post', url, data=data, json=json, **kwargs) 
    File "C:\Python27\lib\site-packages\requests\api.py", line 50, in request 
    response = session.request(method=method, url=url, **kwargs) 
    File "C:\Python27\lib\site-packages\requests\sessions.py", line 465, in request 
    resp = self.send(prep, **send_kwargs) 
    File "C:\Python27\lib\site-packages\requests\sessions.py", line 573, in send 
    r = adapter.send(request, **kwargs) 
    File "C:\Python27\lib\site-packages\requests\adapters.py", line 431, in send 
    raise SSLError(e, request=request) 
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) 

回答

0

您遇到的問題似乎是由不可信的SSL證書引起的。

最快的修復方法是設置verify=False。請注意,這將導致證書無法驗證,並使您的應用程序面臨安全風險。但是,如果你是大人物,它正在一個安全的網絡中運行,所以這不是一個嚴重的問題。

+0

我嘗試了與驗證= False,並且我正在此回:$蟒postUsingRequests.py <響應[200]> <響應[200]> <響應[200]> C:\ Python27 \ lib \ site-packages \ urllib3 \ connectionpool.py:768:InsecureRequestWarning:未驗證的HTTPS請求正在進行。強烈建議添加證書驗證。請參閱:https://urllib3.readthedocs.org/en/latest/security.html InsecureRequestWarning) – mjpablo23

+0

我期待一個頁面上有一個表格來刮擦。這是否意味着它不會把我帶到那個頁面? – mjpablo23

+0

似乎如果我沒有通過認證,它沒有顯示我的表格。 – mjpablo23

0
s = requests.session() 
s.auth = {'USER_NAME': '----', 'PASSWORD': '----'} 
pageCert = requests.post(post_url_finance, proxies=proxies, verify=False) 

我用s.auth和verify = False。這給了我一個迴應,而不是給我SSL錯誤。

相關問題