switched request module, so no need for burpsuite anymore

This commit is contained in:
Simon
2025-07-15 18:01:26 +00:00
parent fe8c564126
commit d77e292dbd
6 changed files with 49 additions and 136 deletions

View File

@@ -12,8 +12,8 @@ futures = "0.3.31"
htmlentity = "1.3.2"
ntex = { version = "2.0", features = ["tokio"] }
ntex-files = "2.0.0"
reqwest = { version = "0.12.18", features = ["blocking", "json", "rustls-tls"] }
serde = "1.0.219"
serde_json = "1.0.140"
tokio = "1.45.1"
tokio = { version = "1", features = ["full"] }
wreq = { version = "5", features = ["full"] }
wreq-util = "2"

View File

@@ -1,7 +1,5 @@
#FROM debian
FROM consol/debian-xfce-vnc:latest
ENV REFRESHED_AT 2025_06_03
FROM debian
# FROM consol/debian-xfce-vnc:latest
# Switch to root user to install additional software
USER 0
@@ -30,20 +28,5 @@ RUN apt install -yq libssl-dev \
sudo \
&& apt-get clean
RUN mkdir -p /usr/share/man/man1 && \
curl -fsSL https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor -o /etc/apt/trusted.gpg.d/adoptium.gpg && \
echo "deb https://packages.adoptium.net/artifactory/deb bullseye main" > /etc/apt/sources.list.d/adoptium.list && \
apt-get update && \
apt-get install -y temurin-21-jdk
RUN java -version
RUN curl https://portswigger.net/burp/releases/download \
-o burpsuite_community.jar
USER 1000
RUN python3 -m venv ~/.venv && bash -c "source ~/.venv/bin/activate && pip3 install pyautogui pillow opencv-python"
RUN echo "source ~/.venv/bin/activate" >> ~/.bashrc

View File

@@ -1,9 +1,9 @@
use std::vec;
use std::env;
use error_chain::error_chain;
use reqwest::{Proxy};
use futures::future::join_all;
use wreq::Client;
use wreq_util::Emulation;
use crate::db;
use crate::providers::Provider;
use crate::util::cache::VideoCache;
@@ -14,7 +14,7 @@ use crate::USER_AGENT; // Make sure Provider trait is imported
error_chain! {
foreign_links {
Io(std::io::Error);
HttpRequest(reqwest::Error);
HttpRequest(wreq::Error);
}
}
@@ -152,18 +152,9 @@ impl HanimeProvider {
}
}
let client = match env::var("BURP_URL").as_deref() {
Ok(burp_url) =>
reqwest::Client::builder()
.user_agent(USER_AGENT)
.proxy(Proxy::https(burp_url).unwrap())
.danger_accept_invalid_certs(true)
.build()?,
Err(_) => reqwest::Client::builder()
.user_agent(USER_AGENT)
.danger_accept_invalid_certs(true)
.build()?,
};
let client = Client::builder()
.emulation(Emulation::Firefox136)
.build()?;
let url = format!("https://h.freeanimehentai.net/api/v8/video?id={}&", hit.slug);
let response = client.get(url).send().await?;
@@ -228,18 +219,9 @@ impl HanimeProvider {
.search_text(query.clone())
.order_by(order_by)
.ordering(ordering);
let client = match env::var("BURP_URL").as_deref() {
Ok(burp_url) =>
reqwest::Client::builder()
.user_agent(USER_AGENT)
.proxy(Proxy::https(burp_url).unwrap())
.danger_accept_invalid_certs(true)
.build()?,
Err(_) => reqwest::Client::builder()
.user_agent(USER_AGENT)
.danger_accept_invalid_certs(true)
.build()?,
};
let client = Client::builder()
.emulation(Emulation::Firefox136)
.build()?;
let response = client.post("https://search.htv-services.com/search")
.json(&search)
.send().await?;
@@ -288,7 +270,6 @@ impl Provider for HanimeProvider {
let _ = featured;
let _ = per_page;
let _ = sort;
println!("Sort: {:?}", sort);
let videos: std::result::Result<Vec<VideoItem>, Error> = match query {
Some(q) => self.get(cache, pool, page.parse::<u8>().unwrap_or(1), q, sort).await,
None => self.get(cache, pool, page.parse::<u8>().unwrap_or(1), "".to_string(), sort).await,

View File

@@ -2,9 +2,9 @@ use std::vec;
use std::env;
use error_chain::error_chain;
use htmlentity::entity::{decode, ICodedDataTrait};
use reqwest::{Proxy};
use futures::future::join_all;
use wreq::Client;
use wreq_util::Emulation;
use crate::db;
use crate::providers::Provider;
use crate::util::cache::VideoCache;
@@ -17,7 +17,7 @@ use crate::USER_AGENT; // Make sure Provider trait is imported
error_chain! {
foreign_links {
Io(std::io::Error);
HttpRequest(reqwest::Error);
HttpRequest(wreq::Error);
}
}
@@ -59,18 +59,9 @@ impl PerverzijaProvider {
};
let client = match env::var("BURP_URL").as_deref() {
Ok(burp_url) =>
reqwest::Client::builder()
.user_agent(USER_AGENT)
.proxy(Proxy::https(burp_url).unwrap())
.danger_accept_invalid_certs(true)
.build()?,
Err(_) => reqwest::Client::builder()
.user_agent(USER_AGENT)
.danger_accept_invalid_certs(true)
.build()?,
};
let client = Client::builder()
.emulation(Emulation::Firefox136)
.build()?;
let response = client.get(url.clone()).send().await?;
// print!("Response: {:?}\n", response);
@@ -141,18 +132,9 @@ impl PerverzijaProvider {
vec![]
}
};
let client = match env::var("BURP_URL").as_deref() {
Ok(burp_url) =>
reqwest::Client::builder()
.user_agent(USER_AGENT)
.proxy(Proxy::https(burp_url).unwrap())
.danger_accept_invalid_certs(true)
.build()?,
Err(_) => reqwest::Client::builder()
.user_agent(USER_AGENT)
.danger_accept_invalid_certs(true)
.build()?,
};
let client = Client::builder()
.emulation(Emulation::Firefox136)
.build()?;
let response = client.get(url.clone()).send().await?;
if response.status().is_success() {
@@ -384,18 +366,9 @@ impl PerverzijaProvider {
drop(conn);
let client = match env::var("BURP_URL").as_deref() {
Ok(burp_url) =>
reqwest::Client::builder()
.user_agent(USER_AGENT)
.proxy(Proxy::https(burp_url).unwrap())
.danger_accept_invalid_certs(true)
.build()?,
Err(_) => reqwest::Client::builder()
.user_agent(USER_AGENT)
.danger_accept_invalid_certs(true)
.build()?,
};
let client = Client::builder()
.emulation(Emulation::Firefox136)
.build()?;
let response = client.get(lookup_url.clone()).send().await?;
let text = match response.status().is_success(){

View File

@@ -3,28 +3,24 @@ use std::env;
use error_chain::error_chain;
use futures::future::join_all;
use htmlentity::entity::{decode, ICodedDataTrait};
use ntex::channel::pool;
use reqwest::Client;
use reqwest::{Proxy};
use crate::db;
use crate::providers::Provider;
use crate::util::cache::VideoCache;
use crate::util::flaresolverr::{FlareSolverrRequest, Flaresolverr};
use crate::videos::{self, VideoItem};
use crate::videos::{VideoItem};
use crate::DbPool;
use crate::USER_AGENT; // Make sure Provider trait is imported
use std::collections::HashMap;
use std::time::Duration;
use tokio::time::sleep;
use wreq::Client;
use wreq_util::Emulation;
error_chain! {
foreign_links {
Io(std::io::Error);
HttpRequest(reqwest::Error);
HttpRequest(wreq::Error);
}
}
#[derive(Debug, Clone)]
pub struct SpankbangProvider {
url: String,
@@ -55,18 +51,9 @@ impl SpankbangProvider {
};
let client = match env::var("BURP_URL").as_deref() {
Ok(burp_url) =>
reqwest::Client::builder()
.user_agent(USER_AGENT)
.proxy(Proxy::https(burp_url).unwrap())
.danger_accept_invalid_certs(true)
.build()?,
Err(_) => reqwest::Client::builder()
.user_agent(USER_AGENT)
.danger_accept_invalid_certs(true)
.build()?,
};
let client = Client::builder()
.emulation(Emulation::Firefox136)
.build()?;
let response = client.get(url.clone()).send().await?;
let mut cookies_string = String::new();
@@ -151,18 +138,9 @@ impl SpankbangProvider {
};
let client = match env::var("BURP_URL").as_deref() {
Ok(burp_url) =>
reqwest::Client::builder()
.user_agent(USER_AGENT)
.proxy(Proxy::https(burp_url).unwrap())
.danger_accept_invalid_certs(true)
.build()?,
Err(_) => reqwest::Client::builder()
.user_agent(USER_AGENT)
.danger_accept_invalid_certs(true)
.build()?,
};
let client = Client::builder()
.emulation(Emulation::Firefox136)
.build()?;
let response = client.get(url.clone()).send().await?;
let mut cookies_string = String::new();
@@ -277,7 +255,6 @@ impl SpankbangProvider {
let vid = html.split("\n").collect::<Vec<&str>>();
if vid.len() > 200 {
println!("Video item has too many lines: {}", vid.len());
return Err("Video item has too many lines".into());
}
// for (index ,line) in vid.iter().enumerate() {
@@ -303,13 +280,13 @@ impl SpankbangProvider {
// else{
// preview = preview_line.split("data-src=\"").collect::<Vec<&str>>()[1].split("\"").collect::<Vec<&str>>()[0].to_string();
// }
let duration_str = vid.iter().find(|s| s.contains("<span class=\"video-badge l\">")).unwrap().split("<span class=\"video-badge l\">").collect::<Vec<&str>>()[1].split("m<").collect::<Vec<&str>>()[0];
let duration_str = vid[64].split("m").collect::<Vec<&str>>()[0];
let duration: u32 = duration_str.parse::<u32>().unwrap_or(0) * 60;
let view_and_rating_str: Vec<&str> = vid.iter().copied().filter(|s| s.contains("<span class=\"md:text-body-md\">")).collect();
let views_str = view_and_rating_str[0].split(">").collect::<Vec<&str>>()[1].split("K<").collect::<Vec<&str>>()[0];
let views = (views_str.parse::<f32>().unwrap_or(0.0) * 1000.0) as u32;
let rate_str = view_and_rating_str[1].split(">").collect::<Vec<&str>>()[1].split("%<").collect::<Vec<&str>>()[0];
let rating = rate_str.parse::<f32>().unwrap_or(0.0);
// let view_and_rating_str: Vec<&str> = vid.iter().copied().filter(|s| s.contains("<span class=\"md:text-body-md\">")).collect();
// let views_str = view_and_rating_str[0].split(">").collect::<Vec<&str>>()[1].split("K<").collect::<Vec<&str>>()[0];
// let views = (views_str.parse::<f32>().unwrap_or(0.0) * 1000.0) as u32;
// let rate_str = view_and_rating_str[1].split(">").collect::<Vec<&str>>()[1].split("%<").collect::<Vec<&str>>()[0];
// let rating = rate_str.parse::<f32>().unwrap_or(0.0);
let url_part = vid.iter().find(|s| s.contains("<a href=\"/")).unwrap().split("<a href=\"/").collect::<Vec<&str>>()[1].split("\"").collect::<Vec<&str>>()[0];
let url = match self.get_video_url(self.url.clone() + url_part, client, cookies, pool).await {
Ok(video_url) => video_url,
@@ -332,8 +309,8 @@ impl SpankbangProvider {
};
let video_item = VideoItem::new(id, title, url.clone().to_string(), "spankbang".to_string(), thumb, duration)
.views(views)
.rating(rating)
// .views(views)
// .rating(rating)
// .formats(vec![format])
// .preview(preview)
;

View File

@@ -1,7 +1,8 @@
use std::collections::HashMap;
use reqwest::{Client, Proxy};
use serde_json::json;
use wreq::Client;
use wreq_util::Emulation;
#[derive(serde::Serialize, serde::Deserialize, Debug)]
pub struct FlareSolverrRequest {
@@ -78,9 +79,7 @@ impl Flaresolverr {
request: FlareSolverrRequest,
) -> Result<FlareSolverrResponse, Box<dyn std::error::Error>> {
let client = Client::builder()
.proxy(Proxy::https("http://192.168.0.101:8080").unwrap())
.proxy(Proxy::http("http://192.168.0.101:8080").unwrap())
.danger_accept_invalid_certs(true)
.emulation(Emulation::Firefox136)
.build()?;
let response = client