请求和Jython交互

2024-03-28 16:43:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在为一个应用程序(Burp套件)构建一个扩展,我似乎无法使请求库和Jython之间的交互工作。你知道吗

让我解释一下我的情况:

endpoints = ['a','b','c','d','e']

#I have a list of str urls

for URL in urlList:
    for endpoint in endpoints
        newURL = URL + endpoint

        getResponse = requests.get(newURL)
        postResponse = requests.post(newURL)
        getResponseText = getResponse.text
        postResponseText = postResponse.text

        if ("Very specific error" in getResponseText):
            getEndpointFound = True

        if ("Very specific error" in postResponseText):
            postEndpointFound = True

URL来自burp扩展,为URL格式(Java)。然后我将其转换为字符串并将其传递给requests.getrequests.post。你知道吗

这部分工作很好,我基本上是这样做的。你知道吗

urlList.append(str(initialUrl)) #Initial URL comes from requestInfo.getUrl() from Burp API

正如我所说,这是可行的。添加端点的请求可以正常工作。你知道吗

当我想用“手工制作的url”发送请求时,问题就来了

splitURL = str(initialUrl).split("/")
urlList.append((splitURL[0] + "/" + splitURL[1] + "/" + splitURL[2] + "/"))

上面的代码基本上将“source”URL添加到urlList。例如,如果我们有www.example.com/index,那行将www.example.com添加到urlList。你知道吗

当我用这个URL发出请求时,我得到以下错误。你知道吗

File "C:\Users\User\Desktop\BurpExtender\BurpExtension-master\manuTest.py", line 111, in searchEndpoint
    getResponse = requests.get(newURL)
  File "C:\Python27\Lib\site-packages\requests\api.py", line 75, in get
    return request('get', url, params=params, **kwargs)
  File "C:\Python27\Lib\site-packages\requests\api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Python27\Lib\site-packages\requests\sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Python27\Lib\site-packages\requests\sessions.py", line 686, in send
    r.content
  File "C:\Python27\Lib\site-packages\requests\models.py", line 828, in content
    self._content = b''.join(self.iter_content(CONTENT_CHUNK_SIZE)) or b''
  File "C:\Python27\Lib\site-packages\requests\models.py", line 750, in generate
    for chunk in self.raw.stream(chunk_size, decode_content=True):
  File "C:\Python27\Lib\site-packages\requests\models.py", line 750, in generate
    for chunk in self.raw.stream(chunk_size, decode_content=True):
  File "C:\Python27\Lib\site-packages\urllib3\response.py", line 560, in stream
    for line in self.read_chunked(amt, decode_content=decode_content):
  File "C:\Python27\Lib\site-packages\urllib3\response.py", line 766, in read_chunked
    decoded = self._flush_decoder()
  File "C:\Python27\Lib\site-packages\urllib3\response.py", line 408, in _flush_decoder
    return buf + self._decoder.flush()
  File "C:\Users\User\Desktop\BurpExtender\jython-standalone-2.7.1.jar\Lib\zlib.py", line 244, in flush
  File "C:\Users\User\Desktop\BurpExtender\jython-standalone-2.7.1.jar\Lib\zlib.py", line 281, in _get_inflate_data
zlib.error: java.util.zip.DataFormatException: invalid distance too far back

你知道怎么回事吗?我无法区分初始url(str(requestInfo.getUrl()))和我使用split然后添加创建的url


Tags: inpyselfurlforgetlibpackages