add: support for scraping more image links
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import type { RequestHandler } from './$types';
|
||||
|
||||
export const GET: RequestHandler = async ({ url }) => {
|
||||
const imageUrl = url.searchParams.get('url');
|
||||
|
||||
if (!imageUrl) {
|
||||
return new Response('Image URL is required', { status: 400 });
|
||||
}
|
||||
|
||||
try {
|
||||
// Fetch the image with proper headers to avoid blocking
|
||||
const response = await fetch(imageUrl, {
|
||||
headers: {
|
||||
'User-Agent':
|
||||
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
||||
'Accept': 'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
|
||||
'Accept-Language': 'en-US,en;q=0.9',
|
||||
'Referer': new URL(imageUrl).origin,
|
||||
'Sec-Fetch-Dest': 'image',
|
||||
'Sec-Fetch-Mode': 'no-cors',
|
||||
'Sec-Fetch-Site': 'cross-site'
|
||||
}
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
return new Response('Failed to fetch image', { status: response.status });
|
||||
}
|
||||
|
||||
const contentType = response.headers.get('content-type') || 'image/jpeg';
|
||||
const imageBuffer = await response.arrayBuffer();
|
||||
|
||||
// Return the image with appropriate headers
|
||||
return new Response(imageBuffer, {
|
||||
headers: {
|
||||
'Content-Type': contentType,
|
||||
'Cache-Control': 'public, max-age=86400', // Cache for 1 day
|
||||
'Access-Control-Allow-Origin': '*'
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Image proxy error:', error);
|
||||
return new Response('Failed to proxy image', { status: 500 });
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user