通过过滤器过滤播客

时间:2020-03-06 14:41:17  来源:igfitidea点击:

我的工作场所通过迫使我们通过代理来过滤Internet流量,但不幸的是,诸如IT会话和Libsyn之类的网站都被阻止了。但是,如果mp3文件来自不在代理黑名单上的网站,则通常不会对其进行过滤。

那么,是否有某个网站可以让我给它提供一个URL,然后以该URL下载MP3并以我的方式发送它,从而使代理浏览?

另外,还有其他简便的方法可以让我从工作中获取这些播客的mp3文件吗?

编辑和更新:由于我已经投票数次,也许我应该解释/证明我的情况。我是在政府机构工作的承包商,我们使用一些非常激进和过分热情的商业过滤软件。我的老板很适合我听工作中的播客,也很适合我规避代理过滤,也不想处理使IT部门例外的繁琐工作(毕竟是政府)因此,我觉得这对程序员来说是一个重要且相关的问题。

不幸的是,所有绕过Web筛选器的代理网站也都被阻止,因此我可能必须提前下载自己喜欢的播客,然后将其投入工作。如果可以告诉我有关一个鲜为人知的服务,我可以尝试一下,但该服务可能不会被阻止,我将不胜感激。

解决方案

还有许多其他的Development / Dotnet / Technology播客,请尝试其中的一种。对于被阻止的站点,请尝试使用匿名代理站点,那里有很多站点。

由于这是与工作相关的材料,因此我建议我们提出一个请求,要求不要阻止有关站点。

我们可以SSH退出吗? SSH隧道是朋友!

为什么不在家订阅并将喜欢的播客复制到mp3播放器或者USB驱动器,然后每天与之一起工作并在晚上回到家呢?然后,我们可以收听,并且我们不会绕过客户网络。

最后,我编写了一个非常简单的cgi脚本,并将其托管在Web服务器上,并在工作计算机上托管了一个脚本来使用它。这是CGI脚本:

#!/usr/local/bin/python

import cgitb; cgitb.enable()
import cgi
from urllib2 import urlopen

def tohex(data):
    return "".join(hex(ord(char))[2:].rjust(2,"0") for char in data)

def fromhex(encoded):
    data = ""
    while encoded:
        data += chr(int(encoded[:2], 16))
        encoded = encoded[2:]
    return data

if __name__=="__main__":
    print("Content-type: text/plain")
    print("")
    url = fromhex( cgi.FieldStorage()["target"].value )
    contents = urlopen(url).read()
    for i in range(len(contents)/40+1):
        print( tohex(contents[40*i:40*i+40]) )

这是用于下载播客的客户端脚本:

#!/usr/bin/env python2.6
import os
from sys import argv
from urllib2 import build_opener, ProxyHandler

if os.fork():
   exit()

def tohex(data):
   return "".join(hex(ord(char))[2:].rjust(2,"0") for char in data)

def fromhex(encoded):
   data = ""
   while encoded:
       data += chr(int(encoded[:2], 16))
       encoded = encoded[2:]
   return data

if __name__=="__main__":
   if len(argv) < 2:
       print("usage: %s URL [FILENAME]" % argv[0])
       quit()

   os.chdir("/home/courtwright/mp3s")
   url = "http://example.com/cgi-bin/hex.py?target=%s" % tohex(argv[1])
   fname = argv[2] if len(argv)>2 else argv[1].split("/")[-1]
   with open(fname, "wb") as dest:
       for line in build_opener(ProxyHandler({"http":"proxy.example.com:8080"})).open(url):
           dest.write( fromhex(line.strip()) )
           dest.flush()