我找到了解决我的语法错误的方法,但是我不明白为什么原始代码不起作用。
我尝试了多个不同的模块,例如urllib
,requests
甚至是sockets
。但是我被引导使用requests
来简化和提高准确性。我不想透露很多信息,因为这对HTB来说是一个挑战,但是我伸出援手的人也只是告诉我“你们的语法看起来还不错”,也无济于事。如果由于扰流板而需要删除帖子,我会立即删除。
以下代码片段对您有效
import requests
import hashlib
s = requests.session()
url = 'someURL'
r = s.get(url)
cookie = s.cookies.get_dict() ##CHANGING THIS WORKED
x = r.text[167:187] #grabbing specific string
a = hashlib.md5(x.encode('utf-8')).hexdigest() ### CHANGING THIS WORKED
# b = s.post(url, data=a, cookies={'PHPSESSID': '{cookie}'})
final = s.post(url, data={'hash':a}, cookies=cookie)
print(final.text)
我希望在请求期间将PHPSESSID以cookie形式传递回服务器。上面的语法有效,但是这不行...
import requests
import hashlib
s = requests.session()
url = 'someURL'
r = s.get(url)
cookie = s.cookies['PHPSESSID']
x = r.text[167:187]
h = hashlib.md5()
h.update(x)
a = h.hexdigest()
b = s.post(url, data=a, cookies={'PHPSESSID': '{cookie}'})
print(b.text)
如果我想给自己分配一个cookie,该怎么办?我不了解get_dict()
的工作方式,而另一个却没有。
答案 0 :(得分:0)
在这两种情况下,cookie实际上都可以正确传递。主要区别在于
hashlib
模块处理unicode-objects
的方式。
解决方案
因为x
是一个unicode对象,所以我必须先对其进行编码,然后再将其发送到hexdigest()
这就是为什么
h = hashlib.md5(x.encode('utf-8')).hexdigest()
有效,而其他无效。只需对x进行编码即可。