मैंने पूरी तरह से अलग दृष्टिकोण की कोशिश की है, स्क्रेपी का उपयोग करना है, हालांकि यह एक ही समस्या है! यहां बताया गया है कि मैंने इसे कैसे हल किया: SO: पायथन स्क्रेपी - गैर-पाठ फ़ाइल डाउनलोड से बचने के लिए mimetype आधारित फ़िल्टर?
समाधान एक Node.jsप्रॉक्सी को सेटअप करना है और इसे http_proxyपर्यावरण चर के माध्यम से उपयोग करने के लिए स्क्रेपी को कॉन्फ़िगर करना है ।
क्या प्रॉक्सी क्या करना चाहिए है:
- स्क्रेपी से HTTP अनुरोध लें और इसे क्रॉल किए जा रहे सर्वर पर भेज दें। फिर यह स्क्रेपी से प्रतिक्रिया वापस देता है अर्थात सभी HTTP ट्रैफ़िक को रोक देता है।
- द्विआधारी फ़ाइलों के लिए (आपके द्वारा लागू किए गए एक अनुमान के आधार पर) यह
403 Forbiddenस्क्रेपी को त्रुटि भेजता है और अनुरोध / प्रतिक्रिया को तत्काल बंद कर देता है। यह समय बचाने में मदद करता है, ट्रैफ़िक और स्क्रेपी क्रैश नहीं होगा।
नमूना प्रॉक्सी कोड जो वास्तव में काम करता है!
http.createServer(function(clientReq, clientRes) {
var options = {
host: clientReq.headers['host'],
port: 80,
path: clientReq.url,
method: clientReq.method,
headers: clientReq.headers
};
var fullUrl = clientReq.headers['host'] + clientReq.url;
var proxyReq = http.request(options, function(proxyRes) {
var contentType = proxyRes.headers['content-type'] || '';
if (!contentType.startsWith('text/')) {
proxyRes.destroy();
var httpForbidden = 403;
clientRes.writeHead(httpForbidden);
clientRes.write('Binary download is disabled.');
clientRes.end();
}
clientRes.writeHead(proxyRes.statusCode, proxyRes.headers);
proxyRes.pipe(clientRes);
});
proxyReq.on('error', function(e) {
console.log('problem with clientReq: ' + e.message);
});
proxyReq.end();
}).listen(8080);