Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ dev = [
"tox-pdm>=0.7.2",
"tox>=4.13.0",
"pytest>=8.0.2",
"colorama>=0.4.6"
]

[[tool.pdm.autoexport]]
Expand Down
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ humanfriendly==10.0 \
pyreadline3==3.5.4; sys_platform == "win32" and python_version >= "3.8" \
--hash=sha256:8d57d53039a1c75adba8e50dd3d992b28143480816187ea5efbd5c78e6c885b7 \
--hash=sha256:eaf8e6cc3c49bcccf145fc6067ba8643d1df34d604a1ec0eccbf7a18e6d3fae6
colorama>=0.4.6
18 changes: 16 additions & 2 deletions src/bypass_url_parser/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"""Bypass Url Parser, made with love by @TheLaluka
A tool that tests MANY url bypasses to reach a 40X protected page.


Usage:
bypass-url-parser (-u <URL> | -R <file>) [-m <mode>] [-o <outdir>] [-S <level>] [ (-H <header>)...] [-r <num>]
[-s <ip>] [--spoofip-replace] [-p <port>] [--spoofport-replace] [-t <threads>] [-T <timeout>]
Expand Down Expand Up @@ -63,6 +64,8 @@
from shutil import which
from typing import Any, overload
from urllib.parse import ParseResult, urlparse
from colorama import Fore, Style, init as _cinit
_cinit(autoreset=True)

import coloredlogs
from docopt import docopt
Expand Down Expand Up @@ -1589,19 +1592,30 @@ def get_formatted_response(self, with_content_length=False, trunk_redirect_url=T
:param bool trunk_redirect_url: If True, truncate the size of redirection url
:return: Formatted curl item response. Ex: [403] [text/html] [548] [13] [68] [403 Forbidden] []
"""

# Pick a colour once per call
if 200 <= self.response_status_code < 300:
sc_token = f"{Fore.GREEN}{self.response_status_code}{Style.RESET_ALL}"
elif 300 <= self.response_status_code < 400:
sc_token = f"{Fore.BLUE}{self.response_status_code}{Style.RESET_ALL}"
elif 400 <= self.response_status_code < 500:
sc_token = f"{Fore.YELLOW}{self.response_status_code}{Style.RESET_ALL}"
else:
sc_token = f"{Fore.RED}{self.response_status_code}{Style.RESET_ALL}"

# Limit the size of the redirect URL (optional)
redirect_url = self.response_redirect_url
if redirect_url and trunk_redirect_url:
redirect_url = self.response_redirect_url[: CurlItem.REDIRECT_URL_MAX_SIZE]

# Use it for full response output (content_length and full redirect_url)
if with_content_length:
return f"[{self.response_status_code}] [{self.response_content_type}] [{self.response_content_length}] " \
return f"[{sc_token}] [{self.response_status_code}] [{self.response_content_type}] [{self.response_content_length}] " \
f"[{self.response_lines_count}] [{self.response_words_count}] [{self.response_title}] " \
f"[{self.response_server_type}] [{self.response_redirect_url}]"
# Use it for response aggregating (no content_length and trunked redirect_url)
else:
return f"[{self.response_status_code}] [{self.response_content_type}] [{self.response_lines_count}] " \
return f"[{sc_token}] [{self.response_status_code}] [{self.response_content_type}] [{self.response_lines_count}] " \
f"[{self.response_words_count}] [{self.response_title}] [{self.response_server_type}] " \
f"[{redirect_url}]"

Expand Down