curl clean¶
Clean up curl command by removing unnecessary headers while keeping only the essential ones
(Content-Type
, Origin
, and Referer
).
import streamlit as st
import pyperclip
import json
st.set_page_config(
page_title="Curl-Clean"
)
@st.cache_data
def print_banner():
print("""
_ _
__ _ _ _ _| |___ __| |___ __ _ _ _
/ _| || | '_| |___/ _| / -_) _` | ' \\
\\__|\\_,_|_| |_| \\__|_\\___\\__,_|_||_|
""")
return 1
print_banner()
Process Curl command
def process_curl_command(text):
# Split into lines
lines = text.split('\n')
# Keep only essential headers
result = []
in_headers = False
found_data_raw = False
for line in lines:
line = line.strip()
# Skip empty lines
if not line:
continue
# Keep the curl command line
if line.startswith('curl'):
result.append(line + ' \\')
in_headers = True
continue
# Keep only essential headers
if in_headers and line.startswith('-H'):
if any(header in line for header in ['Content-Type:', 'Origin:', 'Referer:']):
result.append(' ' + line + ' \\')
# Keep the data-raw section
if line.startswith('--data-raw'):
found_data_raw = True
result.append(' ' + line)
break
# If we found data-raw, extract and append the data separately
data_raw_content = None
if found_data_raw:
data_raw_index = text.find('--data-raw')
if data_raw_index != -1:
data_raw_content = text[data_raw_index:]
return '\n'.join(result), data_raw_content
Get clipboard content
text = pyperclip.paste()
Create Streamlit UI
st.title('Curl-Clean')
st.write('This tool cleans up curl commands by keeping only essential headers (`Content-Type`, `Origin`, and `Referer`) and the `data-raw` section.')
Input text area
input_text = st.text_area("Input curl command", value=text, height=200)
Process button
if st.button('Clean Curl Command'):
if input_text:
cleaned_command, data_raw_content = process_curl_command(input_text)
st.text_area("Cleaned curl command", value=cleaned_command, height=200)
# Add copy button
if st.button('Copy to Clipboard'):
pyperclip.copy(cleaned_command)
st.success('Copied to clipboard!')
if data_raw_content:
# Extract JSON from data-raw content by finding content between single quotes
json_start = data_raw_content.find("'") + 1
json_end = data_raw_content.rfind("'")
json_content = data_raw_content[json_start:json_end]
json_data = json.loads(json_content)
st.write("JSON Data:")
st.write(json_data)
else:
st.warning('Please paste a curl command first.')