What's the best solution to prevent other sites from hotlinking my .flv video? I have some websites from Turkey and China embedding their flv players, but hotlinking my videos on their websites. Are there any good scripts to take care of this? Or alternatively, could this be safely taken care of with .htaccess by any chance?
FLV Hotlink Protection
Collapse
X
-
only allow linking from your domain onlySince 1999: 69 Adult Industry awards for Best Hosting Company and professional excellence.

My Newest Theme -
My recent research has led me to the conclusion that hotlink protection for Flash video files is quite difficult as Flash video players do not send referrer information when they access the video. If I'm not mistaken, .htaccess depends on this referring information to determine whether or not the video is being hotlinked.
Your best option, given the above information is accurate, is to seek out and implement some streaming video solution as they normally afford you hotlinking protection.
Outside of this, you will probably want to obfuscate the link to your videos (such as using www.domain.com/stream.php?video_id=X as the URL for the video) and/or implement some solution where the names of your video files are changed at certain invervals.
Hopefully someone more knowledgeable than myself will chime in.Comment
-
-
Comment
-
There are many modules for Apache, lighttpd, etc. that do this for you.
.htaccess (mod_rewrite used for referrer blocking) is not an option for blocking FLV's, or really any video whatsoever.
It depends on your server setup and configuration which modules can be used, and how hard said modules are to implement.
The most basic and easiest way is if the videos are only to be accessed from your domain(s), and you can make a rule such as "unless the visitor has visited page X in the last 15 minutes, deny all video loads for them".
From there, you can do more complicated things such as have your application link to videos with a secure token in the URL, etc. This would require some form of application modifications however. More and more apps are starting support this.
If you also need to support embeds in random websites, it gets a lot harder to "filter" good traffic from bad. You can setup mod_geoip to do most of what you like most likely, but we have run into some customers who want quite a bit of complex rulesets made - so sometimes it can be difficult.Comment
-
i tried this via htaccess
direct link http://www.domain.com/video.flv (blocks it)
wget link (blocks it)
embed from a player on another server (blocks it)
download manager (blocks it)
Code:Options +FollowSymLinks RewriteEngine On RewriteCond {HTTP_REFERER} !^(http://(www\.)?domain\.com(/.*)?)?$ [NC] RewriteRule \.(flv|mpg|wmv)$ - [NC,F,L]Since 1999: 69 Adult Industry awards for Best Hosting Company and professional excellence.

My Newest ThemeComment
-
mod_secdownload...Mechanical Bunny Media
Mechbunny Tube Script | Mechbunny Webcam Aggregator Script | Custom Web DevelopmentComment
-
all flvs in one folder and change the folder name periodically rahter than each file's name, better yet if your script can do thisComment
-
i tried this via htaccess
direct link http://www.domain.com/video.flv (blocks it)
wget link (blocks it)
embed from a player on another server (blocks it)
download manager (blocks it)
Code:Options +FollowSymLinks RewriteEngine On RewriteCond {HTTP_REFERER} !^(http://(www\.)?domain\.com(/.*)?)?$ [NC] RewriteRule \.(flv|mpg|wmv)$ - [NC,F,L]
I'm gonna give this a try. Being a complete newb, I take it "domain" is to be replaced with my domain name (the only domain name that will be allowed to play these files) and trailing slashes retained as in example, right? i also take it this .htaccess file is to be uploaded in the directory where files are stored, right?Comment
-
Fris, I've tested some of the things and it seems to work fine on those. Will do some more testing, just had quick question - what line would I need to add to it in order to allow one more external domain name to play back the videos (in other words, both local plus one more domain name would be allowed to play it back).Comment
-
Thats because your ruleset denies all requests without an HTTP_REFERER,i tried this via htaccess
direct link http://www.domain.com/video.flv (blocks it)
wget link (blocks it)
embed from a player on another server (blocks it)
download manager (blocks it)
Code:Options +FollowSymLinks RewriteEngine On RewriteCond {HTTP_REFERER} !^(http://(www\.)?domain\.com(/.*)?)?$ [NC] RewriteRule \.(flv|mpg|wmv)$ - [NC,F,L]
you are going to block a lot of legit requests with that.Comment
-
There are several ways to do it.
Of course, since I also run tube sites I am not interested in telling you how and make you a viable competition.
Hire a coder/server admin or research it by yourself.Comment
-
doesnt this only permit domain.com to show the videos or else it blocks it?
if not domain.com as refer then 403?
i only want to display it on domain.comSince 1999: 69 Adult Industry awards for Best Hosting Company and professional excellence.

My Newest ThemeComment
-
There is no way to protect FLV files on 100%. Every method (including cookies, obfuscated names etc) can be easily hacked if someone needs it.Obey the CowgodComment
-
-
You are right about that.
The problem with flv players is that they don't send a HTTP_REFERER (just like the old movie problem) and you will be blocking legitimate requests.
This is the reason scripts like antihotlinking, traffic guardian and the like were created.Comment
-
I don't know how much bandwidth is costing you but check out LinkSentinel or contact them about your needs. They do custom work as well.The Only Time When Success Comes Before Work Is In A Dictionary.
Did you ever notice: When you put the 2 words 'The' and 'IRS' together it spells 'Theirs.'Comment
-
-
Flash ALWAYS sends player/verion information along with it, including referer header information [at least, the last time I checked]. It's not possible to remove this from within the flash itself, the headers are fixed.My recent research has led me to the conclusion that hotlink protection for Flash video files is quite difficult as Flash video players do not send referrer information when they access the video. If I'm not mistaken, .htaccess depends on this referring information to determine whether or not the video is being hotlinked.
Your best option, given the above information is accurate, is to seek out and implement some streaming video solution as they normally afford you hotlinking protection.
Outside of this, you will probably want to obfuscate the link to your videos (such as using www.domain.com/stream.php?video_id=X as the URL for the video) and/or implement some solution where the names of your video files are changed at certain invervals.
Hopefully someone more knowledgeable than myself will chime in.
You don't want to change your filenames, what you want to do is this.
When you embed your videos, feed a hash into the player.
This hash will be either a] time locked, or b] 1 time only [ie, stored in a db]
The player, when it goes to load the video, will send the original hash, and modified [xoring is easiest] version of the hash.
When the request comes to play the file, if the first hash and second hash aren't present or aren't matching as they should be, the file simply doesn't play.
There are other steps to take from here, keeping your hash system well salted, encrypting your SWF file [to prevent your xor algo getting cracked]
This is not the only way. There are quite a few others, such as:
1 - Set a session when the visitor hits your page. No session, no play.
2- Whitelist the person's IP when they hit your page, for ~30 seconds to play a video.
No whitelist, no play.
There are heaps of ways of doing this
Last edited by quantum-x; 03-24-2009, 06:56 AM.Comment
-
Comment
-
I had to double check to make sure, I'm not seeing it:
Code:127.0.0.1 - - [24/Mar/2009:09:52:36 -0500] "GET /flvideo/1.flv HTTP/1.0" 200 4765368 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.04 (hardy) Firefox/3.0.7"
Yeah, this is pretty much the best idea* as long as by session you're not referring to a browser session.1 - Set a session when the visitor hits your page. No session, no play.
2- Whitelist the person's IP when they hit your page, for ~30 seconds to play a video.
No whitelist, no play.
* - it can be tricked with frames so you will need to break out of frames
and with image preloading, you can use the standard mod rewrite protection for this.Comment
-
That's a browser request.
Check the headers. Just cap'd this.
You *cannot* unset x-flash-version, UA-CPU or Referer in flash.Code:GET /video.php?file=SNIPSNIP HTTP/1.1 Accept: */* Accept-Language: en-US Referer: http://members3.site.com/flash/flvplayer.swf x-flash-version: 10,0,12,36 UA-CPU: x86
I personally like the rolling hash + timebombed URLs. If you make them last for say 5 plays or 1 hour, people add them to their tubes and forget about them, then they end up w/ broken URLs ;)Comment
-
I'm not a tube owner. I own a blog and have three videos on it that I'm hosting myself. I don't pose a "competition" threat to anyone here. I'm focusing more and more on mainstream and blog in question is NOT an adult blog either. However I prefer to host my content myself, including pictures and videos so I don't have broken shit on my pages if owner of the video deletes it (even if we're talking youtube or liveleak). That's why I'm hosting my own videos. But fuck - I get a lot of bandwidth wasted by Chinese and Turkish fuckers and get nothing out of it in return, that's why I've asked if there was a way to eliminate this BW theft.Comment
-
Not a tube owner, just an innocent blog with a couple of posts that contain videos is all. I have never owned a tube and don't plan on. However even if one of your videos gets hotlinked by a busy Chinese site, it eats up a lot of BW. I'm looking around for a solution to help me eliminate it.Comment



Comment