UPDATED: 10th MAY, 2012
BAD NEWS:
..
Some research update (Someone please confirm and post your comments)
YOUTUBE has split its videos into segments of 1.5 Mb each which is the approximation of the 51 seconds. I am sure YOUTUBE have taken this step to prevent people from caching entire videos. If you have a video which is 100 Mb large, it will be split into about 55-60 segments.
As of right now, storeurl.pl wont be able to cache it. Currently VIDEOCACHE plugin is
doing full cache of youtube but at higher 400 $ Per Year 
Following is an update version of youtube cachinghttp://aacable.wordpress.com/2012/01/19/youtube-caching-with-squid-2-7-using-storeurl-pl/
.
http://aacable.wordpress.com/2012/08/13/youtube-caching-with-squid-nginx/
.
..
What is LUSCA/SQUID ?
LUSCA is an advance version or Fork of SQUID 2. The Lusca
project aims to fix the shortcomings in the Squid-2. It also supports a
variety of clustering protocols. By Using it, you can cache some
dynamic contents that you previously can’t do with the squid.
For example
# Video Cachingi.e Youtube / tube etc . . .
# Windows / Linux Updates / Anti-virus , Anti-Malware i.e. Avira/ Avast / MBAM etc . . .
# Well known sites i.e. facebook / google / yahoo etch. etch.
# Download caching mp3′s/mpeg/avi etc . . .
# Video Cachingi.e Youtube / tube etc . . .
# Windows / Linux Updates / Anti-virus , Anti-Malware i.e. Avira/ Avast / MBAM etc . . .
# Well known sites i.e. facebook / google / yahoo etch. etch.
# Download caching mp3′s/mpeg/avi etc . . .
Advantages of Youtube Caching !!!
In most part of the world, bandwidth is very expensive, therefore it is (in some scenarios) very useful to Cache Youtube videos or any other flash videos, so if one of user downloads video / flash file , why again the same user or other user can’t download the same file from the CACHE, why he sucking the internet pipe for same content again n again?Peoples on same LAN ,sometimes watch similar videos. If I put some youtube video link on on FACEBOOK, TWITTER or likewise , and all my friend will watch that video and that particular video gets viewed many times in few hours. Usually the videos are shared over facebook or other social networking sites so the chances are high for multiple hits per popular videos for my lan users / friends.
This is the reason why I wrote this article. I have implemented Ubuntu with LUSCA/ Squid on it and its working great, but to achieve some results you need to have some TB of storage drives in your proxy machine.
Disadvantages of Youtube Caching !!!
The chances, that another user will watch the same video, is really slim. if I search for something specific on youtube, i get more then hundreds of search results for same video. What is the chance that another user will search for the same thing, and will click on the same link / result? Youtube hosts more than 10 million videos. Which is too much to cache anyway. You need lot of space to cache videos. Also accordingly you will be needing ultra modern fast hardware with tons of RAM to handle such kind of cache giant. anyhow Try itWe will divide this article in following Sections
1# Installing SQUID / LUSCA in UBUNTU
2# Setting up SQUID / LUSCA Configuration files
3# Performing some Tests, testing your Cache HIT
4# Using ZPH TOS to deliver cached contents to clients vai mikrotik at full LAN speed, Bypassing the User Queue for cached contents.
1# Installing SQUID / LUSCA in UBUNTU
I assume your ubuntu box have 2 interfaces configured, one for LAN and second for WAN. You have internet sharing already configured. Now moving on to LUSCA / SQUID installation.Download LUSCA source and compile it using,
1
2
3
4
| mkdir /tempcd /temptar xzvf LUSCA_HEAD-r14809.tar.gz |
1
2
3
| sudo apt-get updatesudo apt-get install gcc build-essential sharutils ccze libzip-dev automake1.9cd LUSCA_HEAD-r14809 |
1
2
3
| ./configure
'--prefix=/usr/local/squid' '--enable-removal-policies=heap,lru'
'--disable-dependency-tracking' '--disable-arp-acl'
'--disable-cache-digests' '--enable-cachemgr-hostname=localhost'
'--disable-delay-pools' '--enable-epoll'
'--enable-external-acl-helpers=ip_user' '--disable-ident-lookups'
'--enable-linux-netfilter' '--disable-referer-log'
'--enable-removal-policies=heap,lru' '--disable-snmp' '--disable-ssl'
'--enable-storeio=aufs,null,coss' '--disable-useragent-log'
'--disable-wccpv2' '--with-aio' '--with-maxfd=1048576' '--with-dl'
'--with-pthreads' 'build_alias=i686-redhat-linux-gnu'
'host_alias=i686-redhat-linux-gnu'
'targe_alias=i686-redhat-linux-gnu''--enable-truncate'
'--disable-unlinkd' '--with-large-files' '--disable-htcp'sudo make allsudo make install |
/usr/local/squid/etc/
and squid executable can be found at
/usr/local/squid/sbin/
Now We will edit squid.conf file to make it customize according to our requirements by . . .
1
| nano /usr/local/squid/etc/squid.conf |
Remember following squid.conf is not very neat and clean , you will find many un necessary junk entries in it, but as I didn’t had time to clean them all, so you may clean them as per your targets and goals.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
| # SQUID 2.7/ LUSCA TEST CONFIG FILE# Email: aacable@hotmail.com# Web : http://aacable.wordpress.com# PORT and Transparent Optionhttp_port 8080 transparentserver_http11 onicp_port 0# Cache Directory , modify it according to your system.# but first create directory in root by mkdir /cache1# and then issue this command chown proxy:proxy /cache1# [for ubuntu user is proxy, in Fedora user is SQUID]# I have set 500 MB for caching reserved just for caching ,# adjust it according to your need.# My recommendation is to have one cache_dir per drive. zzz#store_dir_select_algorithm round-robincache_dir aufs /cache1 500 16 256cache_replacement_policy heap LFUDAmemory_replacement_policy heap LFUDA# If you want to enable DATE time n SQUID Logs,use followingemulate_httpd_log onlogformat squid %tl %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mtlog_fqdn off# How much days to keep users access web logs# You need to rotate your log files with a cron job. For example:# 0 0 * * * /usr/local/squid/bin/squid -k rotatelogfile_rotate 14debug_options ALL,1cache_access_log /var/log/squid/access.logcache_log /var/log/squid/cache.logcache_store_log /var/log/squid/store.log#I used DNSAMSQ service for fast dns resolving#so install by using "apt-get install dnsmasq" firstdns_nameservers 127.0.0.1 221.132.112.8ftp_user anonymous@ftp_list_width 32ftp_passive onftp_sanitycheck on#ACL Sectionacl all src 0.0.0.0/0.0.0.0acl manager proto cache_objectacl localhost src 127.0.0.1/255.255.255.255acl to_localhost dst 127.0.0.0/8acl SSL_ports port 443 563 # https, snewsacl SSL_ports port 873 # rsyncacl Safe_ports port 80 # httpacl Safe_ports port 21 # ftpacl Safe_ports port 443 563 # https, snewsacl Safe_ports port 70 # gopheracl Safe_ports port 210 # waisacl Safe_ports port 1025-65535 # unregistered portsacl Safe_ports port 280 # http-mgmtacl Safe_ports port 488 # gss-httpacl Safe_ports port 591 # filemakeracl Safe_ports port 777 # multiling httpacl Safe_ports port 631 # cupsacl Safe_ports port 873 # rsyncacl Safe_ports port 901 # SWATacl purge method PURGEacl CONNECT method CONNECThttp_access allow manager localhosthttp_access deny managerhttp_access allow purge localhosthttp_access deny purgehttp_access deny !Safe_portshttp_access deny CONNECT !SSL_portshttp_access allow localhosthttp_access allow allhttp_reply_access allow allicp_access allow all#==========================# Administrative Parameters#==========================# I used UBUNTU so user is proxy, in FEDORA you may use use squidcache_effective_user proxycache_effective_group proxycache_mgr aacable@hotmail.comvisible_hostname proxy.aacable.netunique_hostname aacable@hotmail.com#=============# ACCELERATOR#=============half_closed_clients offquick_abort_min 0 KBquick_abort_max 0 KBvary_ignore_expire onreload_into_ims onlog_fqdn offmemory_pools offcache_swap_low 98cache_swap_high 99max_filedescriptors 65536fqdncache_size 16384retry_on_error onoffline_mode offpipeline_prefetch on# If you want to hide your proxy machine from being detected at various site use followingvia off#============================================# OPTIONS WHICH AFFECT THE CACHE SIZE / zaib#============================================# If you have 4GB memory in Squid box, we will use formula of 1/3# You can adjust it according to your need. IF squid is taking too much of RAM# Then decrease it to 128 MB or even less.cache_mem 8 MBminimum_object_size 0 bytesmaximum_object_size 100 MBmaximum_object_size_in_memory 128 KB#============================================================$# SNMP , if you want to generate graphs for SQUID via MRTG#============================================================$#acl snmppublic snmp_community gl#snmp_port 3401#snmp_access allow snmppublic all#snmp_access allow all#============================================================# ZPH , To enable cache content to be delivered at full lan speed,# To bypass the queue at MT.#============================================================tcp_outgoing_tos 0x30 allzph_mode toszph_local 0x30zph_parent 0zph_option 136# Caching Youtubeacl videocache_allow_url url_regex -i \.youtube\.com\/get_video\?acl videocache_allow_url url_regex -i \.youtube\.com\/videoplayback \.youtube\.com\/videoplay \.youtube\.com\/get_video\?acl
videocache_allow_url url_regex -i \.youtube\.[a-z][a-z]\/videoplayback
\.youtube\.[a-z][a-z]\/videoplay \.youtube\.[a-z][a-z]\/get_video\?acl
videocache_allow_url url_regex -i \.googlevideo\.com\/videoplayback
\.googlevideo\.com\/videoplay \.googlevideo\.com\/get_video\?acl videocache_allow_url url_regex -i \.google\.com\/videoplayback \.google\.com\/videoplay \.google\.com\/get_video\?acl
videocache_allow_url url_regex -i \.google\.[a-z][a-z]\/videoplayback
\.google\.[a-z][a-z]\/videoplay \.google\.[a-z][a-z]\/get_video\?acl videocache_allow_url url_regex -i proxy[a-z0-9\-][a-z0-9][a-z0-9][a-z0-9]?\.dailymotion\.com\/acl videocache_allow_url url_regex -i vid\.akm\.dailymotion\.com\/acl videocache_allow_url url_regex -i [a-z0-9][0-9a-z][0-9a-z]?[0-9a-z]?[0-9a-z]?\.xtube\.com\/(.*)flvacl videocache_allow_url url_regex -i \.vimeo\.com\/(.*)\.(flv|mp4)acl videocache_allow_url url_regex -i va\.wrzuta\.pl\/wa[0-9][0-9][0-9][0-9]?acl videocache_allow_url url_regex -i \.youporn\.com\/(.*)\.flvacl videocache_allow_url url_regex -i \.msn\.com\.edgesuite\.net\/(.*)\.flvacl videocache_allow_url url_regex -i \.tube8\.com\/(.*)\.(flv|3gp)acl videocache_allow_url url_regex -i \.mais\.uol\.com\.br\/(.*)\.flvacl videocache_allow_url url_regex -i \.blip\.tv\/(.*)\.(flv|avi|mov|mp3|m4v|mp4|wmv|rm|ram|m4v)acl videocache_allow_url url_regex -i \.apniisp\.com\/(.*)\.(flv|avi|mov|mp3|m4v|mp4|wmv|rm|ram|m4v)acl videocache_allow_url url_regex -i \.break\.com\/(.*)\.(flv|mp4)acl videocache_allow_url url_regex -i redtube\.com\/(.*)\.flvacl videocache_allow_dom dstdomain .mccont.com .metacafe.com .cdn.dailymotion.comacl videocache_deny_dom dstdomain .download.youporn.com .static.blip.tvacl dontrewrite url_regex redbot\.org \.phpacl getmethod method GETstoreurl_access deny dontrewritestoreurl_access deny !getmethodstoreurl_access deny videocache_deny_domstoreurl_access allow videocache_allow_urlstoreurl_access allow videocache_allow_domstoreurl_access deny allstoreurl_rewrite_program /etc/squid/storeurl.plstoreurl_rewrite_children 7storeurl_rewrite_concurrency 100acl store_rewrite_list urlpath_regex -i \/(get_video\?|videodownload\?|videoplayback.*id)acl store_rewrite_list urlpath_regex -i \.flv$ \.mp3$ \.mp4$ \.swf$ \storeurl_access allow store_rewrite_liststoreurl_access deny allrefresh_pattern
-i \.flv$ 10080 80% 10080 override-expire override-lastmod
reload-into-ims ignore-reload ignore-no-cache ignore-private
ignore-authrefresh_pattern
-i \.mp3$ 10080 80% 10080 override-expire override-lastmod
reload-into-ims ignore-reload ignore-no-cache ignore-private
ignore-authrefresh_pattern
-i \.mp4$ 10080 80% 10080 override-expire override-lastmod
reload-into-ims ignore-reload ignore-no-cache ignore-private
ignore-authrefresh_pattern
-i \.swf$ 10080 80% 10080 override-expire override-lastmod
reload-into-ims ignore-reload ignore-no-cache ignore-private
ignore-authrefresh_pattern
-i \.gif$ 10080 80% 10080 override-expire override-lastmod
reload-into-ims ignore-reload ignore-no-cache ignore-private
ignore-authrefresh_pattern
-i \.jpg$ 10080 80% 10080 override-expire override-lastmod
reload-into-ims ignore-reload ignore-no-cache ignore-private
ignore-authrefresh_pattern
-i \.jpeg$ 10080 80% 10080 override-expire override-lastmod
reload-into-ims ignore-reload ignore-no-cache ignore-private
ignore-authrefresh_pattern
-i \.exe$ 10080 80% 10080 override-expire override-lastmod
reload-into-ims ignore-reload ignore-no-cache ignore-private
ignore-auth# 1 year = 525600 mins, 1 month = 10080 mins, 1 day = 1440refresh_pattern
(get_video\?|videoplayback\?|videodownload\?|\.flv?) 10080 80% 10080
ignore-no-cache ignore-private override-expire override-lastmod
reload-into-imsrefresh_pattern
(get_video\?|videoplayback\?id|videoplayback.*id|videodownload\?|\.flv?)
10080 80% 10080 ignore-no-cache ignore-private override-expire
override-lastmod reload-into-imsrefresh_pattern
\.(ico|video-stats) 10080 80% 10080 override-expire ignore-reload
ignore-no-cache ignore-private ignore-auth override-lastmod
negative-ttl=10080refresh_pattern \.etology\? 10080 80% 10080 override-expire ignore-reload ignore-no-cacherefresh_pattern galleries\.video(\?|sz) 10080 80% 10080 override-expire ignore-reload ignore-no-cacherefresh_pattern brazzers\? 10080 80% 10080 override-expire ignore-reload ignore-no-cacherefresh_pattern \.adtology\? 10080 80% 10080 override-expire ignore-reload ignore-no-cacherefresh_pattern
^.*(utm\.gif|ads\?|rmxads\.com|ad\.z5x\.net|bh\.contextweb\.com|bstats\.adbrite\.com|a1\.interclick\.com|ad\.trafficmp\.com|ads\.cubics\.com|ad\.xtendmedia\.com|\.googlesyndication\.com|advertising\.com|yieldmanager|game-advertising\.com|pixel\.quantserve\.com|adperium\.com|doubleclick\.net|adserving\.cpxinteractive\.com|syndication\.com|media.fastclick.net).*
10080 20% 10080 ignore-no-cache ignore-private override-expire
ignore-reload ignore-auth negative-ttl=40320 max-stale=10refresh_pattern
^.*safebrowsing.*google 10080 80% 10080 override-expire ignore-reload
ignore-no-cache ignore-private ignore-auth negative-ttl=10080refresh_pattern ^http://((cbk|mt|khm|mlt)[0-9]?)\.google\.co(m|\.uk) 10080 80% 10080 override-expire ignore-reload ignore-private negative-ttl=10080refresh_pattern ytimg\.com.*\.jpg 10080 80% 10080 override-expire ignore-reloadrefresh_pattern images\.friendster\.com.*\.(png|gif) 10080 80% 10080 override-expire ignore-reloadrefresh_pattern garena\.com 10080 80% 10080 override-expire reload-into-imsrefresh_pattern photobucket.*\.(jp(e?g|e|2)|tiff?|bmp|gif|png) 10080 80% 10080 override-expire ignore-reloadrefresh_pattern
vid\.akm\.dailymotion\.com.*\.on2\? 10080 80% 10080
ignore-no-cache override-expire override-lastmodrefresh_pattern
mediafire.com\/images.*\.(jp(e?g|e|2)|tiff?|bmp|gif|png) 10080 80%
10080 reload-into-ims override-expire ignore-privaterefresh_pattern
^http:\/\/images|pics|thumbs[0-9]\. 10080 80% 10080
reload-into-ims ignore-no-cache ignore-reload override-expirerefresh_pattern
^http:\/\/www.onemanga.com.*\/ 10080 80% 10080
reload-into-ims ignore-no-cache ignore-reload override-expirerefresh_pattern ^http://v\.okezone\.com/get_video\/([a-zA-Z0-9])
10080 80% 10080 override-expire ignore-reload ignore-no-cache
ignore-private ignore-auth override-lastmod negative-ttl=10080#images facebookrefresh_pattern
-i \.facebook.com.*\.(jpg|png|gif) 10080 80% 10080
ignore-reload override-expire ignore-no-cacherefresh_pattern
-i \.fbcdn.net.*\.(jpg|gif|png|swf|mp3) 10080 80% 10080
ignore-reload override-expire ignore-no-cacherefresh_pattern
static\.ak\.fbcdn\.net*\.(jpg|gif|png) 10080 80% 10080
ignore-reload override-expire ignore-no-cacherefresh_pattern
^http:\/\/profile\.ak\.fbcdn.net*\.(jpg|gif|png) 10080 80% 10080
ignore-reload override-expire ignore-no-cache#All Filerefresh_pattern
-i \.(3gp|7z|ace|asx|bin|deb|divx|dvr-ms|ram|rpm|exe|inc|cab|qt)
10080 80% 10080 ignore-no-cache override-expire override-lastmod
reload-into-imsrefresh_pattern
-i \.(rar|jar|gz|tgz|bz2|iso|m1v|m2(v|p)|mo(d|v)|arj|lha|lzh|zip|tar)
10080 80% 10080 ignore-no-cache override-expire override-lastmod
reload-into-imsrefresh_pattern
-i \.(jp(e?g|e|2)|gif|pn[pg]|bm?|tiff?|ico|swf|dat|ad|txt|dll)
10080 80% 10080 ignore-no-cache override-expire override-lastmod
reload-into-imsrefresh_pattern
-i
\.(avi|ac4|mp(e?g|a|e|1|2|3|4)|mk(a|v)|ms(i|u|p)|og(x|v|a|g)|rm|r(a|p)m|snd|vob)
10080 80% 10080 ignore-no-cache override-expire override-lastmod
reload-into-imsrefresh_pattern
-i
\.(pp(t?x)|s|t)|pdf|rtf|wax|wm(a|v)|wmx|wpl|cb(r|z|t)|xl(s?x)|do(c?x)|flv|x-flv)
10080 80% 10080 ignore-no-cache override-expire override-lastmod
reload-into-imsrefresh_pattern -i (/cgi-bin/|\?) 0 0% 0refresh_pattern ^gopher: 1440 0% 1440refresh_pattern ^ftp: 10080 95% 10080 override-lastmod reload-into-imsrefresh_pattern . 1440 95% 10080 override-lastmod reload-into-ims |
1
2
3
4
| mkdir /cache1chown proxy:proxy /cache1mkdir /var/log/squidchmod 777 /var/log/squid |
1
| /usr/local/squid/sbin/squid -z |
SOTEURL.PL
Now We have to create an important file name storeurl.pl , which is very important and actually it does themain job to pull video from cache.
1
2
3
4
| mkdir /etc/squidtouch /etc/squid/storeurl.plchmod +x /etc/squid/storeurl.plnano /etc/squid/storeurl.pl |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
| #!/usr/bin/perl# This script is NOT written or modified by me, I only copy pasted it from the internet.# It was First originally Writen by chudy_fernandez@yahoo.com# & Have been modified by various persons over the net to fix/add various functions.# For Example this ver was modified by member of comstuff.net to satisfy common and dynamic content.# th30nly @comstuff.net a.k.a invisible_theater ,# For more info, http://wiki.squid-cache.org/ConfigExamples/DynamicContent/YouTube$|=1;while (<>) {@X = split;# $X[1] =~ s/&sig=.*//;$x = $X[0] . " ";$_ = $X[1];$u = $X[1];#speedtestif (m/^http:\/\/(.*)\/speedtest\/(.*\.(jpg|txt))\?(.*)/) {print $x . "http://www.speedtest.net.SQUIDINTERNAL/speedtest/" . $2 . "\n";#mediafire}elsif (m/^http:\/\/199\.91\.15\d\.\d*\/\w{12}\/(\w*)\/(.*)/) {print $x . "http://www.mediafire.com.SQUIDINTERNAL/" . $1 ."/" . $2 . "\n";#fileserve}elsif (m/^http:\/\/fs\w*\.fileserve\.com\/file\/(\w*)\/[\w-]*\.\/(.*)/) {print $x . "http://www.fileserve.com.SQUIDINTERNAL/" . $1 . "./" . $2 . "\n";#filesonic}elsif (m/^http:\/\/s[0-9]*\.filesonic\.com\/download\/([0-9]*)\/(.*)/) {print $x . "http://www.filesonic.com.SQUIDINTERNAL/" . $1 . "\n";#4shared}elsif (m/^http:\/\/[a-zA-Z]{2}\d*\.4shared\.com(:8080|)\/download\/(.*)\/(.*\..*)\?.*/) {print $x . "http://www.4shared.com.SQUIDINTERNAL/download/$2\/$3\n";#4shared preview}elsif
(m/^http:\/\/[a-zA-Z]{2}\d*\.4shared\.com(:8080|)\/img\/(\d*)\/\w*\/dlink__2Fdownload_2F(\w*)_3Ftsid_3D[\w-]*\/preview\.mp3\?sId=\w*/)
{print $x . "http://www.4shared.com.SQUIDINTERNAL/$2\n";#photos-X.ak.fbcdn.net where X a-z}elsif (m/^http:\/\/photos-[a-z](\.ak\.fbcdn\.net)(\/.*\/)(.*\.jpg)/) {print $x . "http://photos" . $1 . "/" . $2 . $3 . "\n";#YX.sphotos.ak.fbcdn.net where X 1-9, Y a-z} elsif (m/^http:\/\/[a-z][0-9]\.sphotos\.ak\.fbcdn\.net\/(.*)\/(.*)/) {print $x . "http://photos.ak.fbcdn.net/" . $1 ."/". $2 . "\n";#maps.google.com} elsif (m/^http:\/\/(cbk|mt|khm|mlt|tbn)[0-9]?(.google\.co(m|\.uk|\.id).*)/) {print $x . "http://" . $1 . $2 . "\n";# compatibility for old cached get_video?video_id}
elsif
(m/^http:\/\/([0-9.]{4}|.*\.youtube\.com|.*\.googlevideo\.com|.*\.video\.google\.com).*?(videoplayback\?id=.*?|video_id=.*?)\&(.*?)/)
{$z = $2; $z =~ s/video_id=/get_video?video_id=/;print $x . "http://video-srv.youtube.com.SQUIDINTERNAL/" . $z . "\n";# youtube fix} elsif (m/^http:\/\/([0-9.]{4}|.*\.youtube\.com|.*\.googlevideo\.com|.*\.video\.google\.com)\/videoplayback\?(.*)/) {$p_str = $2;$tag = "";$alg = "";$id = "";$range = "";if ($p_str =~ m/(itag=[0-9]*)/){$tag = "&".$1}if ($p_str =~ m/(algorithm=[a-z]*\-[a-z]*)/){$alg = "&".$1}if ($p_str =~ m/(id=[a-zA-Z0-9]*)/){$id = "&".$1}if ($p_str =~ m/(range=[0-9\-]*)/){$range = "&".$1; $range =~ s/-//; $range =~ s/range=//; }print $x . "http://video-srv.youtube.com.SQUIDINTERNAL/" . $tag . "&" . $alg . "&" . $id . "&" . $range . "\n";} elsif (m/^http:\/\/www\.google-analytics\.com\/__utm\.gif\?.*/) {print $x . "http://www.google-analytics.com/__utm.gif\n";#Cache High Latency Ads}
elsif
(m/^http:\/\/([a-z0-9.]*)(\.doubleclick\.net|\.quantserve\.com|\.googlesyndication\.com|yieldmanager|cpxinteractive)(.*)/)
{$y = $3;$z = $2;for ($y) {s/pixel;.*/pixel/;s/activity;.*/activity/;s/(imgad[^&]*).*/\1/;s/;ord=[?0-9]*//;s/;×tamp=[0-9]*//;s/[&?]correlator=[0-9]*//;s/&cookie=[^&]*//;s/&ga_hid=[^&]*//;s/&ga_vid=[^&]*//;s/&ga_sid=[^&]*//;# s/&prev_slotnames=[^&]*//# s/&u_his=[^&]*//;s/&dt=[^&]*//;s/&dtd=[^&]*//;s/&lmt=[^&]*//;s/(&alternate_ad_url=http%3A%2F%2F[^(%2F)]*)[^&]*/\1/;s/(&url=http%3A%2F%2F[^(%2F)]*)[^&]*/\1/;s/(&ref=http%3A%2F%2F[^(%2F)]*)[^&]*/\1/;s/(&cookie=http%3A%2F%2F[^(%2F)]*)[^&]*/\1/;s/[;&?]ord=[?0-9]*//;s/[;&]mpvid=[^&;]*//;s/&xpc=[^&]*//;# yieldmanagers/\?clickTag=[^&]*//;s/&u=[^&]*//;s/&slotname=[^&]*//;s/&page_slots=[^&]*//;}print $x . "http://" . $1 . $2 . $y . "\n";#cache high latency ads} elsif (m/^http:\/\/(.*?)\/(ads)\?(.*?)/) {print $x . "http://" . $1 . "/" . $2 . "\n";# spicific servers starts here....} elsif (m/^http:\/\/(www\.ziddu\.com.*\.[^\/]{3,4})\/(.*?)/) {print $x . "http://" . $1 . "\n";#cdn, varialble 1st path} elsif (($u =~ /filehippo/) && (m/^http:\/\/(.*?)\.(.*?)\/(.*?)\/(.*)\.([a-z0-9]{3,4})(\?.*)?/)) {@y = ($1,$2,$4,$5);$y[0] =~ s/[a-z0-9]{2,5}/cdn./;print $x . "http://" . $y[0] . $y[1] . "/" . $y[2] . "." . $y[3] . "\n";#rapidshare}
elsif (($u =~ /rapidshare/) &&
(m/^http:\/\/(([A-Za-z]+[0-9-.]+)*?)([a-z]*\.[^\/]{3}\/[a-z]*\/[0-9]*)\/(.*?)\/([^\/\?\&]{4,})$/))
{print $x . "http://cdn." . $3 . "/SQUIDINTERNAL/" . $5 . "\n";} elsif (($u =~ /maxporn/) && (m/^http:\/\/([^\/]*?)\/(.*?)\/([^\/]*?)(\?.*)?$/)) {print $x . "http://" . $1 . "/SQUIDINTERNAL/" . $3 . "\n";#like porn hub variables url and center part of the path, filename etention 3 or 4 with or without ? at the end}
elsif (($u =~ /tube8|pornhub|xvideos/) &&
(m/^http:\/\/(([A-Za-z]+[0-9-.]+)*?(\.[a-z]*)?)\.([a-z]*[0-9]?\.[^\/]{3}\/[a-z]*)(.*?)((\/[a-z]*)?(\/[^\/]*){4}\.[^\/\?]{3,4})(\?.*)?$/))
{print $x . "http://cdn." . $4 . $6 . "\n";#...spicific servers end here.#photos-X.ak.fbcdn.net where X a-z} elsif (m/^http:\/\/photos-[a-z].ak.fbcdn.net\/(.*)/) {print $x . "http://photos.ak.fbcdn.net/" . $1 . "\n";#for yimg.com video} elsif (m/^http:\/\/(.*yimg.com)\/\/(.*)\/([^\/\?\&]*\/[^\/\?\&]*\.[^\/\?\&]{3,4})(\?.*)?$/) {print $x . "http://cdn.yimg.com//" . $3 . "\n";#for yimg.com doubled} elsif (m/^http:\/\/(.*?)\.yimg\.com\/(.*?)\.yimg\.com\/(.*?)\?(.*)/) {print $x . "http://cdn.yimg.com/" . $3 . "\n";#for yimg.com with &sig=} elsif (m/^http:\/\/(.*?)\.yimg\.com\/(.*)/) {@y = ($1,$2);$y[0] =~ s/[a-z]+[0-9]+/cdn/;$y[1] =~ s/&sig=.*//;print $x . "http://" . $y[0] . ".yimg.com/" . $y[1] . "\n";#youjizz. We use only domain and filename}
elsif (($u =~ /media[0-9]{2,5}\.youjizz/) &&
(m/^http:\/\/(.*)(\.[^\.\-]*?\..*?)\/(.*)\/([^\/\?\&]*)\.([^\/\?\&]{3,4})((\?|\%).*)?$/))
{@y = ($1,$2,$4,$5);$y[0] =~ s/(([a-zA-A]+[0-9]+(-[a-zA-Z])?$)|(.*cdn.*)|(.*cache.*))/cdn/;print $x . "http://" . $y[0] . $y[1] . "/" . $y[2] . "." . $y[3] . "\n";#general purpose for cdn servers. add above your specific servers.} elsif (m/^http:\/\/([0-9.]*?)\/\/(.*?)\.(.*)\?(.*?)/) {print $x . "http://squid-cdn-url//" . $2 . "." . $3 . "\n";#generic http://variable.domain.com/path/filename."ex" "ext" or "exte" with or withour "? or %"} elsif (m/^http:\/\/(.*)(\.[^\.\-]*?\..*?)\/(.*)\.([^\/\?\&]{2,4})((\?|\%).*)?$/) {@y = ($1,$2,$3,$4);$y[0] =~ s/(([a-zA-A]+[0-9]+(-[a-zA-Z])?$)|(.*cdn.*)|(.*cache.*))/cdn/;print $x . "http://" . $y[0] . $y[1] . "/" . $y[2] . "." . $y[3] . "\n";# generic http://variable.domain.com/...} elsif (m/^http:\/\/(([A-Za-z]+[0-9-]+)*?|.*cdn.*|.*cache.*)\.(.*?)\.(.*?)\/(.*)$/) {print $x . "http://cdn." . $3 . "." . $4 . "/" . $5 . "\n";# spicific extention that ends with ?} elsif (m/^http:\/\/(.*?)\/(.*?)\.(jp(e?g|e|2)|gif|png|tiff?|bmp|ico|flv|on2)(.*)/) {print $x . "http://" . $1 . "/" . $2 . "." . $3 . "\n";# all that ends with ;} elsif (m/^http:\/\/(.*?)\/(.*?)\;(.*)/) {print $x . "http://" . $1 . "/" . $2 . "\n";} else {print $x . $_ . "sucks\n";}} |
1
| /usr/local/squid/sbin/squid |
To start SQUID Server in Debug mode, to check any erros, use
1
| /usr/local/squid/sbin/squid -d1 |
3# TESTING YOUR CACHE HIT
It’s time to hit the ROAD and do performing some tests.YOUTUBE TEST
Open Youtube and watch any Video. After complete download, Check the same video from another client. You will notice that it download very quickly , you can watch the bar moving fast.As Shown in the example Below . . .
monitor the Squid access LOG. You will see cache hit TPC_HIT for this video.
As Shown in the example Below . . .
MUSIC DOWNLOAD TEST
Now test any music download. For example Go tohttp://www.apniisp.com/songs/indian-movie-songs/ladies-vs-ricky-bahl/690/1.html
As Shown in the example Below . . .
and download any song , after its downloaded, goto 2nd client pc, and download the same song, and monitor the Squid access LOG. You will see cache hit TPC_HIT for this song.
As Shown in the example Below . . .
EXE / PROGRAM DOWNLOAD TEST
Now test any .exe file download.Goto http://www.rarlabs.com and download any package. After Download completes, goto 2nd client pc , and download the same file again. and monitor the Squid access LOG. You will see cache hit TPC_HIT for this file.
As Shown in the example Below . . .
SQUID LOGS
If you face “An error occured” in cached videos , see the following
http://aacable.wordpress.com/2012/01/30/youtube-caching-problem-an-error-occured-please-try-again-later-solved/
Regard’s
Naveed ahmad





how to bypass cached videos from mikrotik queue
ReplyDeleteplsss tel meeeeee pls pls
ReplyDeleteThis will not work because youtube uses https and https are not interceptable by squid.
ReplyDelete