Sorry I don't know anything about any of this, I pay for hosting and don't do anything myself. All I know is stuff I can do in cpanel. | [reply] |
If you're using cPanel, you might want to have a look at their Hotlink Protection feature. This feature allows you to forbid direct access to image files (or any file types you specify). Users can still access the images through your Web pages, but they won't be able to simply slurp up your photos.
I suggest that you have a look at your log files, though. The repeated accessing of your images by only a few users (or rather, only a few IP numbers) suggests an automated process, not people. In that case, you can use cPanel's IP Deny feature, which allows you to block individual IP's, or sets of them. You might also check whether these rude accesses are by a bot, but it really doesn't matter - whoever or whatever it is, it's hogging your bandwidth.
Once you've got a recent access log for your Website, you can write a script to find who's making the most accesses.
#!/usr/bin/perl -w
use strict;
use warnings;
# Get the IP number from each line...
while (<$INFILE>) {
chomp;
my $inline=$_;
/(\d+.\d+.\d+.\d+)\s(.*)/;
print $LOG "$1\n";
# . . .
}
# . . .
# Create list of accesses, most frequent first.
while(<$LOG>) {
chomp;
my $line=$_;
$seen{$line}++;
}
# . . .
foreach my $seenval ( sort {$seen{$b} <=> $seen{$a} } keys %seen)
+{
next unless $seenval;
print $FREQ "$seenval\t$seen{$seenval}\n";
}
This will help you see who's visiting most frequently. That's not quite the same as finding who's hogging the most bandwidth, but it should be a good start.
In order to get bandwidth itself, you'd need to do something like first identifying the size of the file downloaded, and then changing: $seen{$line}++; to $seen{$line}+=$size; (untested)
| [reply] [d/l] [select] |