예제 #1
0
def test_assemble_request():
    assert assemble_request(treq()) == (b"GET /path HTTP/1.1\r\n"
                                        b"header: qvalue\r\n"
                                        b"content-length: 7\r\n"
                                        b"\r\n"
                                        b"content")

    with pytest.raises(exceptions.HttpException):
        assemble_request(treq(content=None))
예제 #2
0
def test_assemble_request():
    assert assemble_request(treq()) == (
        b"GET /path HTTP/1.1\r\n"
        b"header: qvalue\r\n"
        b"content-length: 7\r\n"
        b"host: address:22\r\n"
        b"\r\n"
        b"content"
    )

    with raises(exceptions.HttpException):
        assemble_request(treq(content=None))
def response(flow):
    if "Content-Type" in flow.response.headers:
        req = flow.request
        options = {'domain': req.host}
        if not rules.should_block(flow.request.url, options):
            soup = BeautifulSoup(open('test.html'), features="html.parser")
            if ('text/html' in flow.response.headers["content-type"]):
                data = assemble_request(flow.request).decode('utf-8')
                try:
                    b_soup = BeautifulSoup(
                        flow.response.content.decode('utf-8'), 'html.parser')
                except:
                    return
                text = b_soup.text
                resp = malacius(text)
                if resp:
                    pass
                    # print('html-response', flow.response.content)
                else:
                    print(f'blocked-url {flow.request.url}')
                    flow.response.content = str(
                        BeautifulSoup(open('test.html'),
                                      'html.parser')).encode('utf-8')

        else:
            print(f'blocked-url {flow.request.url}')
            flow.response.content = str(
                BeautifulSoup(open('test.html'),
                              'html.parser')).encode('utf-8')
예제 #4
0
    def get_next_request(self):
        self.intercept_veiwer.config(state=tk.NORMAL)

        if self.intercept.get():
            self.intercept_veiwer.delete('1.0', tk.END)
            with self.lock:
                if len(self.addon.intercepted_flows) > 0:
                    data = self.addon.intercepted_flows[0]

                    self.history.append(data)

                    self.intercept_veiwer.insert(tk.END, self.byte_to_string(assemble_request(data.request)))

                    self.forward_button.config(state="normal")
                    self.drop_button.config(state="normal")

                else:

                    self.intercept_veiwer.insert(tk.END, "")

                    self.forward_button.config(state="disabled")
                    self.drop_button.config(state="disabled")

        else:
            while not self.queue.empty():
                data = self.queue.get(True, 0.5)
                self.history.append(data)

                self.intercept_veiwer.delete('1.0', tk.END)
                self.intercept_veiwer.insert(tk.END, self.byte_to_string(assemble_request(data.request)))

                self.forward_button.config(state="disabled")
                self.drop_button.config(state="disabled")

        self.intercept_veiwer.config(state=tk.DISABLED)

        self.update_history()
        self.window.after(1000, self.get_next_request)
예제 #5
0
 def req(self, flow: flow.Flow) -> None:
     mixto_entry_id = self.get_entry_id()
     self.mitm_method = flow.request.method
     self.mitm_host = flow.request.host
     self.mixto.AddCommit(
         data=self._get_data(
             assemble.assemble_request(flow.request).decode(
                 "utf-8", errors="backslashreplace"),
             flow,
         ),
         entry_id=mixto_entry_id,
         title=self._get_title("request"),
     )
     print("Sent!")
예제 #6
0
 def response(self, flow: mitmproxy.http.HTTPFlow):
     if not hasattr(self, "client"):
         self.client = client.NeatClient(ctx.options.neat_url,
                                         ctx.options.neat_username,
                                         ctx.options.neat_password)
     data = client.CreateRaw.request_class(
         raw_request=base64.b64encode(
             assemble.assemble_request(flow.request)).decode('ascii'),
         raw_response=base64.b64encode(
             assemble.assemble_response(flow.response)).decode('ascii'),
         scheme=flow.request.scheme,
         host=flow.request.host,
         port=flow.request.port,
     )
     self.client.create_raw(data)
예제 #7
0
 def full(self, flow: flow.Flow) -> None:
     mixto_entry_id = self.get_entry_id()
     self.mitm_method = flow.request.method
     self.mitm_host = flow.request.host
     reqdata = assemble.assemble_request(flow.request).decode(
         "utf-8", errors="backslashreplace")
     resdata = assemble.assemble_response(flow.response).decode(
         "utf-8", errors="backslashreplace")
     data = "\n\n\n".join([reqdata, resdata])
     self.mixto.AddCommit(
         data=self._get_data(data, flow),
         entry_id=mixto_entry_id,
         title=self._get_title("request.response"),
     )
     print("Sent!")
예제 #8
0
    def request(self, flow):
        orig_req_data = assemble_request(flow.request)

        if not self._set_request_url(flow, self.POSTREQ_PATH):
            return

        headers = Headers()
        headers['Content-Length'] = str(len(orig_req_data))

        for n in self.PASS_THROUGH:
            val = flow.request.headers.get(n)
            if val is not None:
                headers[n] = val

        flow.request.method = 'POST'
        flow.request.headers = headers
        flow.request.content = orig_req_data
예제 #9
0
def raw_request(f: flow.Flow) -> bytes:
    request = cleanup_request(f)
    if request.raw_content is None:
        raise exceptions.CommandError("Request content missing.")
    return assemble.assemble_request(request)
예제 #10
0
def raw(f: flow.Flow) -> bytes:
    raise_if_missing_request(f)
    return assemble.assemble_request(f.request)  # type: ignore
예제 #11
0
def raw(f: flow.Flow) -> bytes:
    if not hasattr(f, "request"):
        raise exceptions.CommandError("Can't export flow with no request.")
    return assemble.assemble_request(f.request)  # type: ignore
예제 #12
0
 def request(self, flow: http.HTTPFlow):
     if flow.request:
         self.send_payload(flow, PayloadType.HTTP_REQUEST,
                           assemble_request(flow.request))
예제 #13
0
def raw_request(f: flow.Flow) -> bytes:
    return assemble.assemble_request(cleanup_request(f))
예제 #14
0
파일: export.py 프로젝트: wjuncn/mitmproxy
def raw(f: flow.Flow) -> bytes:
    return assemble.assemble_request(cleanup_request(f))  # type: ignore
예제 #15
0
def response(flow):
    ctx.log.info(assemble_request(flow.request).decode("utf-8"))
    flow.response.decode()
    ctx.log.info(assemble_response(flow.response).decode("utf-8"))