'bytes'对象没有属性'items'

问题描述 投票:0回答:1

[在执行CTF挑战时,要求我们在几毫秒内输入某个'key'的MD5哈希,所以我试图在Python3中自动化这样的任务:

import re
import urllib.request
import urllib.parse
import hashlib

url = 'http://random.page'

page = urllib.request.urlopen(url)
header = {}
header['Set-Cookie'] = page.info()['Set-Cookie']
html = page.read().decode('utf-8')
key = re.search("<h3 align='center'>+.*</h3>", html).group(0)[19:-5]
md5 = hashlib.md5(key.encode()).hexdigest()

data = {'hash':md5}
post_data = urllib.parse.urlencode(data).encode('ascii')
post_header = urllib.parse.urlencode(header).encode('ascii')
request = urllib.request.Request(url, data=post_data, headers=post_header)
response = urllib.request.urlopen(request)
print(response.read().decode('utf-8'))

我希望在每次请求时都更改与“键”相同的会话,因此我试图使用相同的cookie。但是会出现此错误:

Traceback (most recent call last):
  File "MD5.py", line 18, in <module>
    request = urllib.request.Request(url, data=post_data, headers=post_header)
  File "/usr/lib/python3.7/urllib/request.py", line 334, in __init__
    for key, value in headers.items():
AttributeError: 'bytes' object has no attribute 'items'
python python-3.x urllib
1个回答
0
投票

不对标题进行urlencode。 urllib.request.Request希望它是字典。

© www.soinside.com 2019 - 2024. All rights reserved.