home *** CD-ROM | disk | FTP | other *** search
/ Netrunner 2004 October / NETRUNNER0410.ISO / regular / iria107a.lzh / script / webjump.ipy < prev    next >
Encoding:
Text File  |  2000-11-23  |  3.0 KB  |  93 lines

  1.  
  2. #name=webjump(path)
  3. #version=0.1
  4. #author=Wolfy
  5. #date=2000/11/22
  6. #comment=webjumpé╠URLé≡ò╧è╖é╡é─â_âEâôâìü[âh
  7. #func=OnRequest
  8. #category=download
  9. #param_comment=
  10.  
  11. import sys,httplib,re,string,os.path,urlparse
  12. from gaogaolib import *
  13.  
  14. #webjumpé╠âzâXâgû╝
  15. hosts = r'^http://.+\.' + \
  16.         r'(webjump|jumpmovies|jumptunes|jumptravel|jumpsports|' + \
  17.         r'jumpshopping|jumpreligion|jumprealestate|jumppolitics|' + \
  18.         r'jumpoutdoors|jumphobbies|jumphealth|jumpgardens|' + \
  19.         r'jumpgames|jumpfood|jumpfinance|jumpfamily|jumpeducation|' + \
  20.         r'jumpfun|jumpcomputers|jumpcareers|jumpbusiness|jumpbooks|' + \
  21.         r'jumpautos|jumpart)\.com'
  22.  
  23. def OnRequest(url,headers,proxy,redirect,item,param):
  24.     r'''HTTPâèâNâGâXâgé╠æOé╔î─é╬éΩé▄é╖üBò╘Ælé═ âtâëâOé╞ÉVé╡éóURLé╠â^âvâï'''
  25.     #Redirecté╚éτé╬ÅIéΦ
  26.     if redirect:
  27.       return (IGNORE,url)
  28.     
  29.     #É│ïKò\î╗âRâôâpâCâï
  30.     re_hosts = re.compile(hosts,re.IGNORECASE)
  31.     if not re_hosts.search(url):
  32.         #î⌐é┬é⌐éτé╚é⌐é┴é╜éτÅIéΦ
  33.         return (IGNORE,url)
  34.     else: #î⌐é┬é⌐é┴é╜éτGETé╖éΘ
  35.         print r'''ÉVé╡éóURLé≡ÆTé╡é▄é╖'''
  36.         #ò╧è╖îπé╠urlé╛é┴é╜éτî│é╔û▀é╖
  37.         url = restore_webjump(url)
  38.         #URLé≡ë≡É═
  39.         url_info = parse_url(url)
  40.         #host,port,pathé≡ô╛éΘ
  41.         (host,port,path) = extract_url(url,proxy)
  42.         #É┌æ▒
  43.         http = httplib.HTTP(host,port)
  44.         http.set_debuglevel(1)
  45.         try:
  46.             #âèâNâGâXâg
  47.             http.putrequest('GET',path)
  48.             #âwâbâ_é≡æùéΘ
  49.             keys = headers.keys()
  50.             for field in keys:
  51.                 #Range: é═û│Äïé╖éΘ
  52.                 if string.lower(field) == 'range':
  53.                   pass
  54.                 elif string.lower(field) == 'host':
  55.                   http.putheader('Host',url_info['host'])
  56.                 else:
  57.                   http.putheader(field,headers[field])
  58.  
  59.             #âèâNâGâXâgÅIéΦ
  60.             http.endheaders()
  61.             #âîâXâ|âôâX
  62.             status_num,status,ret_headers = http.getreply()
  63.             #ɼî≈é╚éτé╬
  64.             if status_num == 200:
  65.                 #htmlô╟é▌ì₧é▌
  66.                 f = http.getfile()
  67.                 html = f.read()
  68.                 f.close()
  69.                 #pathé≡ÆTé╖
  70.                 m = re.search(r'http://.+' + url_info['path'],html,re.IGNORECASE)
  71.                 #pathé¬î⌐é┬é⌐éΩé╬
  72.                 if m:
  73.                     #ɼî≈ ÉVé╡éóURLé≡ò╘é╖
  74.                     ret_url = html[m.start(0):m.end(0)]
  75.                     print r'''ÉVé╡éóURLé╠ĵô╛é╔ɼî≈é╡é▄é╡é╜'''
  76.                     print ret_url
  77.                     #âwâbâ_é≡ò╧éªéΘ
  78.                     headers['Host'] = urlparse.urlparse(ret_url)[1]
  79.                     #ɼî≈
  80.                     return (SUCCESS,ret_url)
  81.                 else:
  82.                     #î⌐é┬é⌐éτé╚éóé╠é┼âGâëü[
  83.                     return (ERROR,url)
  84.             else:
  85.                 #âGâëü[
  86.                 return (ERROR,url)
  87.         finally: #ûYéΩé╕é╔
  88.             http.close()
  89. #end OnRequest
  90.  
  91.  
  92.  
  93.