使用Python发送请求(通过Burp拦截)

4

我希望你能帮我翻译一下关于IT技术的内容。以下是需要翻译的内容:

我对请求理解有些困难。

假设我有这个请求:

POST /user/follow HTTP/1.1
Host: www.website.com
User-Agent: some user agent
Accept: application/json, text/plain, */*
Accept-Language: pl,en-US;q=0.7,en;q=0.3
Referer: https://www.website.com/users/12345/profile
Content-Type: application/json;charset=utf-8
X-CSRF-TOKEN: Ab1/2cde3fGH
Content-Length: 27
Cookie: some-cookie=;
DNT: 1
Connection: close

{"targetUser":"12345"}

我该如何使用这些信息通过Python发送有效请求呢?我发现的内容并没有什么帮助。我需要有人用我提供的数据给我展示一个例子。

3个回答

3
我会做类似这样的事情。
import requests
headers = {
    "User-Agent": "some user agent",
    "Content-Length": 27
    # you get the point
     }
data = {
    "targetUser" : "12345"
    }
url = "www.website.com/user/follow"
r = requests.post(url, headers=headers,data=data)

是的,您需要使用cookie来登录。Cookie是请求头的一部分。


你们玩得开心,我要想办法通过“XSRF令牌验证”。顺便说一下,我不知道该接受哪个答案。不能都选。 - David
抱歉,我的失误。最近我遇到了CSRF令牌的问题。我没有继续我正在处理的工作,但我认为可以通过会话来绕过它。我不确定这在请求中如何工作,但至少是可能的。 - apoorlydrawnape
1
我可以通过控制台获取令牌,将其放入Burp的重复器中并发送请求。它起作用了。现在我需要让我的脚本也能做到这一点。 - David
我再次需要你的帮助。当我使用Burp发送请求时,它可以正常工作,但是当我使用Python发送请求时,我会收到以下响应:{"isValid":false,"data":null,"error":""}。 - David
你能否为此新建一个问题并将链接发送给我?我会尝试帮忙,但肯定有更懂的人。如果你这样做,请包含更多细节。 - apoorlydrawnape
显示剩余4条评论

2

我不会写诗歌,只是给您提供一些示例代码:

import requests

headers = {
    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.5",
    "Referer": "SOMETHING",
    "Cookie": "SOMETHING",
    "Connection": "close",
    "Content-Type": "application/x-www-form-urlencoded"
}
data = "SOME DATA"
url = "https://example.com/something"

request = requests.post(url, headers=headers, data=data)

在头部中,您可以设置所需的标题等。我想您已经明白了;)

谢谢,但在我的情况下,最后一行 - {"targetUser":"12345"} 应该放在哪里?它似乎与其他部分不同。 - David
在你的情况下,你应该将"SOME DATA"更改为"{"targetUser":"12345"}"。 在data变量中,你应该插入你的数据 :) - Symonen

-2

这个Burp扩展程序可能会有所帮助:复制为Python-Requests

它可以将选定的请求复制为Python-Requests调用。

在您的情况下,复制为Python-Requests后,您会得到:

import requests

burp0_url = "http://www.website.com:80/user/follow"
burp0_cookies = {"some-cookie": ""}
burp0_headers = {"User-Agent": "some user agent", "Accept": "application/json, text/plain, */*", "Accept-Language": "pl,en-US;q=0.7,en;q=0.3", "Referer": "https://www.website.com/users/12345/profile", "Content-Type": "application/json;charset=utf-8", "X-CSRF-TOKEN": "Ab1/2cde3fGH", "DNT": "1", "Connection": "close"}
burp0_json={"targetUser": "12345"}
requests.post(burp0_url, headers=burp0_headers, cookies=burp0_cookies, json=burp0_json)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接