【问题标题】:"Invalid security token" while using urllib2使用 urllib2 时出现“无效的安全令牌”
【发布时间】:2019-11-28 13:40:10
【问题描述】:

我正在尝试使用 python 脚本获取 http 请求的内容。但我收到 Invalid security token 执行时出错。 下面是sn-p

#!/usr/bin/python
import urllib2

username="username"
password="password"
url='some_url'
def encodeUserData(user, password):
    return "Basic " + (user + ":" + password).encode("base64").rstrip()
req = urllib2.Request(url)
req.add_header('Accept', 'application/json')
req.add_header("Content-type", "application/json")
req.add_header('Authorization', encodeUserData(username, password))
# make the request and print the results
print res.read()

用户名和密码有特殊字符。

【问题讨论】:

  • .encode("base64") 没有文本编码。你能解释一下你想用函数encodeUserData做什么吗?
  • 我正在尝试对我的用户名和密码进行编码
  • 你可以按照这个:docs.python.org/3/library/base64.html,只需要把你的话变成字节:base64.b64encode(b'username' + b":" + b'password')。这对您有帮助吗?
  • @giosans 我想我做错了除了编码的东西。它不工作。
  • @snakecharmerb 这是标题

标签: python python-2.7 urllib2


【解决方案1】:

鉴于您能够在 bash 上使用 curl 成功运行请求并获得 <Response [200]>,您应该能够使用请求和 urllib2 在 python-2.7 中运行它。事实上,我只是尝试过,以下对我有用:

# with requests
import requests
username="username"
password="password"
url='https://url.html'
def encodeUserData(user, password):
    return "Basic " + (user + ":" + password).encode("base64").rstrip()

response = requests.get(url, headers={'Authorization': encodeUserData(username, password)})
print response.content

如果你想使用 urllib2,这也可以。

# with urllib2
import urllib2
username="username"
password="password"
url='https://url.html'
def encodeUserData(user, password):
    return "Basic " + (user + ":" + password).encode("base64").rstrip()

req = urllib2.Request(url)
req.add_header('Authorization', encodeUserData(username, password))
res = urllib2.urlopen(req)
print res.read()

如果这不起作用,我建议您直接用编码的行替换用户名和密码,看看是否可行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 2021-08-30
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多