如何在使用python3发布表单时设置请求cookie?
我想用python代码自动获取api密钥。 下面是我手工获取api密钥的步骤如何在使用python3发布表单时设置请求cookie?,python,cookies,request,response,Python,Cookies,Request,Response,我想用python代码自动获取api密钥。 下面是我手工获取api密钥的步骤 手工: 打开https://www.alphavantage.co在firefox中 单击立即获取免费API密钥 输入名字姓氏电子邮件 单击获取免费api密钥 2.按代码 import urllib.request, urllib.parse, urllib.error import http.cookiejar LOGIN_URL = 'https://www.alphavantage.co/support/#
https://www.alphavantage.co
在firefox中立即获取免费API密钥
名字
姓氏
电子邮件
获取免费api密钥
import urllib.request, urllib.parse, urllib.error
import http.cookiejar
LOGIN_URL = 'https://www.alphavantage.co/support/#api-key'
params = {
"first": "xx",
"last": "yy",
"occupation": "investor",
"email":"zz@qq.com"
}
headers = {
"Accept-Language":"en-US,en;q=0.8",
"Connection":"keep-alive",
"Content-Length":"77",
"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
"Cookie":"csrftoken=qTbVt3HN2VYiDbJgX1n9DdyaDUYKpMyJ1UvTE3xCplYZcAYk9OQaXJ1F6ACadcjA; _ga=GA1.2.1054357644.1509295038; _gid=GA1.2.1986003924.1509295038; _gat=1",
"Host":"www.alphavantage.co",
"Origin:https":"//www.alphavantage.co",
"Referer:https":"//www.alphavantage.co/support/",
"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.91 Safari/537.36",
"X-CSRFToken":"l7RRVpYomq6fIvjAnuYJiR0xquqoeD5gXrlowpQqejCCKX65OUrUcZzw2ljf9SPB",
"X-Requested-With":"XMLHttpRequest"
}
postdata = urllib.parse.urlencode(params).encode()
user_agent = r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36'
cookie = http.cookiejar.MozillaCookieJar()
handler = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(handler)
request = urllib.request.Request(LOGIN_URL, postdata, headers)
response = opener.open(request)
错误信息:
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 499: Client Disconnected
标头中的cookie是在步骤1.2中创建的请求cookie
如何使用python代码而不是手工获取api密钥
您的代码中有两个错误 首先。POST请求应发送到
/create\u POST/
端点
第二。字段名称不同:
params = {
"first_text": "xx",
"last_text": "yy",
"occupation_text": "investor",
"email_text":"zz@qq.com"
}
您只需要三个头:Referer
,Cookie
,X-CSRFToken
完整代码:
import requests
headers = {
"Referer": "https://www.alphavantage.co/support/",
"Cookie": "csrftoken=YOURTOKEN",
"X-CSRFToken":"YOURTOKEN"
}
params = {
"first_text": "a",
"last_text": "b",
"occupation_text": "Student",
"email_text": "aa@bb.cc"
}
response = requests.post("https://www.alphavantage.co/create_post/",
data=params, headers=headers)
print(response.text)
嗨,据我所知,一旦你从这个网站获得了一个API密钥,你可以从那时起继续使用这个API密钥。然后使用该API密钥对服务器进行查询。
import urllib.request, urllib.parse, urllib.error
import http.cookiejar
LOGIN_URL1 = 'https://www.alphavantage.co/support/#api-key'
cookie = http.cookiejar.MozillaCookieJar()
handler = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(handler)
request = urllib.request.Request(LOGIN_URL1)
response = opener.open(request)
for item in cookie:
x=item.value
LOGIN_URL2 = 'https://www.alphavantage.co/create_post/'
params = {
"first_text": "xx",
"last_text": "yy",
"occupation_text": "Investor",
"email_text": "cc@bb.cc"
}
headers = {
"Referer": "https://www.alphavantage.co/support/",
"Cookie": "csrftoken={0}".format(x),
"X-CSRFToken":"{0}".format(x)
}
postdata = urllib.parse.urlencode(params).encode()
req = urllib.request.Request(LOGIN_URL2, postdata, headers)
response = urllib.request.urlopen(req)
print(response.read())