Python -有没有办法绕过字典键中的非法字符?



我想知道是否有办法绕过字典键中的非法字符?

我正在制作一个"著名的生日"。boost faker,本质上是一个不断点击著名生日api的机器人,使其看起来像是有人提升了该人选择的个人资料。我把API从点击"Boost">

下面是有问题的字典键:

':authority': 'www.famousbirthdays.com',
':method': 'POST',
':path': '/api/people/boost',
':scheme': 'https',

当我运行我的程序时,它抛出一个错误,告诉我需要删除有问题的非法字符。

requests.exceptions.InvalidHeader: 
Invalid leading whitespace, reserved character(s), or returncharacter(s) in header name: ':authority'

有办法绕过这个吗?不能删除,因为他们属于非法字符的标题,如果我改变标题,它将打破计划。

编辑:这是我的代码,所以更容易解决问题:

#https://www.famousbirthdays.com/api/people/boost
import requests
from hyper.contrib import HTTP20Adapter
def main():
person = input('Insert page link (e.g kristian-ramey)n')
def getHeaders(person):
global headers
headers = {
':authority': 'www.famousbirthdays.com',
':method': 'POST',
':path': '/api/people/boost',
':scheme': 'https',
'accept': '*/*',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en-US,en;q=0.9,es;q=0.8,fr;q=0.7',
'content-length': '23',
'content-type': 'application/x-www-form-urlencoded',
'cookie': '__aaxsc=1; _ga=GA1.2.1274875939.1657675345; _gid=GA1.2.109078920.1657675345; lookup=las+vegas; XSRF-TOKEN=eyJpdiI6InZvNmdIXC9hSmhPRzZVelpRMVwvNUV4Zz09IiwidmFsdWUiOiJrbGJYZWloaUpjbnp4cVFCXC8xSndoSmxudmxLbjU5aG9cL2NCWW5qSWVWZ0lJZjVZbzY3ZWRwWlI3ZFZiTnJLZHYiLCJtYWMiOiJkYWViNjNlZmIxODc1ZTllOWM5OGEzMmM0ZTkxMGMzODA2ZTA4MDMyODQ1OWFjYzA4MzQyNDgzMmZjNjQ4ODY0In0%3D; laravel_session=eyJpdiI6Ino1QkR6TTBGaU1kSFBhSjZNMUhMWFE9PSIsInZhbHVlIjoicFwvaVh0TUpReWxmS0pJVzVsV3JzUUlBOGpUKzYySjlwcEdzcTN1ZTlLNUVTenpqazFuZkRsa2xBNWFRT0JRbnkiLCJtYWMiOiJlZDhlODBhMTVjOTYxYzRlZDAxM2JhMGZjYzVkMWE0NmY0NGQyOTkwMmIwNWJhMmNmYmEyYzc0MGVhYTU3OWYzIn0%3D; aasd=8%7C1657676628018',
'origin': 'https://www.famousbirthdays.com',
'referer': f'https://www.famousbirthdays.com/people/{person}.html',
'sec-ch-ua': "".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"",
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': ""Windows"",
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
}
return headers
session = requests.session() 
session.mount('http://www.famousbirthdays.com/api/people/boost', HTTP20Adapter())
r = session.post('http://www.famousbirthdays.com/api/people/boost',headers=getHeaders(person))
print(r.text)
print(r.status_code)
main()

只使用字典推导式和strip()方法

raw_dict = {':authority': 'www.famousbirthdays.com', ':method': 'POST',}
good_dict = {item.lstrip(":"):value for item, value in q.items()}
print(good_dict)

输出为:

{'authority': 'www.famousbirthdays.com', 'method': 'POST'}

最新更新