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))
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')
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)
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!")
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)
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!")
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
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)
def raw(f: flow.Flow) -> bytes: raise_if_missing_request(f) return assemble.assemble_request(f.request) # type: ignore
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
def request(self, flow: http.HTTPFlow): if flow.request: self.send_payload(flow, PayloadType.HTTP_REQUEST, assemble_request(flow.request))
def raw_request(f: flow.Flow) -> bytes: return assemble.assemble_request(cleanup_request(f))
def raw(f: flow.Flow) -> bytes: return assemble.assemble_request(cleanup_request(f)) # type: ignore
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"))