首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python请求使用代理进行身份验证以进行POST调用

Python请求使用代理进行身份验证以进行POST调用
EN

Stack Overflow用户
提问于 2016-04-23 06:52:02
回答 2查看 2.3K关注 0票数 0

我正在使用我公司的互联网,我需要访问一个网页来抓取数据。我使用的是Python请求模块。我需要访问的页面是通过POST请求完成的。我的公司有一个代理人。我可以使用requests.post()中的proxies标志通过代理。但是,有一个使用cookie的身份验证部分,我似乎无法通过它。在使用POST请求时,我应该如何完成身份验证部分?

我正在尝试使用这个线程中描述的身份验证过程,但它不起作用:Authentication and python Requests

代码是这样设置的:

代码语言:javascript
代码运行次数:0
运行
复制
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

然而,我得到了这个错误:

代码语言:javascript
代码运行次数:0
运行
复制
$ 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)
EN

回答 2

Stack Overflow用户

发布于 2016-04-23 07:04:57

您遇到的问题似乎是由不受信任的SSL证书引起的。

最快的修复方法是设置verify=False。请注意,这将导致证书无法验证,并使您的应用程序面临安全风险。但正如您所提到的,它是在安全的网络中运行的,所以这不是一个严重的问题。

票数 0
EN

Stack Overflow用户

发布于 2016-04-29 06:23:00

代码语言:javascript
代码运行次数:0
运行
复制
s = requests.session()
s.auth = {'USER_NAME': '----', 'PASSWORD': '----'}
pageCert = requests.post(post_url_finance, proxies=proxies, verify=False) 

我在verify=False中使用了s.auth。这给了我一个响应,而不是SSL错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36804507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档