4242 errprint ('Can Not Create Local File Cache: ' , e , ' local file cache is disabled automatically.' )
4343 local_cache_enable = False
4444
45- __VERSION__ = '0.18.4 -dev'
45+ __VERSION__ = '0.18.5 -dev'
4646__author__ = 'Aploium <i@z.codes>'
4747
4848# ########## Basic Init #############
6060myurl_prefix = my_host_scheme + my_host_name
6161myurl_prefix_escaped = myurl_prefix .replace ('/' , r'\/' )
6262cdn_domains_number = len (CDN_domains )
63-
63+ allowed_remote_response_headers = {'content-type' , 'date' , 'expires' , 'cache-control' , 'last-modified' , 'server' , 'location' }
64+ allowed_remote_response_headers .update (custom_allowed_remote_headers )
6465# ## Get Target Domain's Root Domain ##
6566_temp = target_domain .split ('.' )
6667if len (_temp ) <= 2 or len (_temp ) == 3 and _temp [1 ] in ('com' , 'net' , 'org' , 'co' , 'edu' , 'mil' , 'gov' , 'ac' ):
@@ -731,12 +732,9 @@ def copy_response(requests_response_obj, content=b''):
731732 assert isinstance (resp , Response )
732733 for header_key in requests_response_obj .headers :
733734 # Add necessary response headers from the origin site, drop other headers
734- if header_key .lower () in (
735- 'content-type' , 'date' , 'expires' , 'cache-control' , 'last-modified' , 'server' ):
736- resp .headers [header_key ] = requests_response_obj .headers [header_key ]
737- # Rewrite the redirection header if we got one, rewrite in-zone domains to our domain
738- if header_key .lower () == 'location' :
735+ if header_key .lower () in allowed_remote_response_headers :
739736 resp .headers [header_key ] = response_text_rewrite (requests_response_obj .headers [header_key ])
737+
740738 # Rewrite The Set-Cookie Header, change the cookie domain to our domain
741739 if header_key .lower () == 'set-cookie' :
742740 # cookie_header_str = dump_cookie_jars_to_header_string_dict(requests_response_obj.cookies)
@@ -950,11 +948,8 @@ def extract_client_header():
950948 head_name_l = head_name .lower ()
951949 if (head_name_l not in ('host' , 'content-length' , 'content-type' )) \
952950 or (head_name_l == 'content-type' and head_value != '' ):
953- outgoing_head [head_name_l ] = head_value
951+ outgoing_head [head_name_l ] = client_requests_text_rewrite ( head_value )
954952
955- # rewrite referer head if we have
956- if 'referer' in outgoing_head :
957- outgoing_head ['referer' ] = client_requests_text_rewrite (outgoing_head ['referer' ])
958953 if verbose_level >= 3 : dbgprint ('FilteredRequestHeaders:' , outgoing_head )
959954 return outgoing_head
960955
@@ -972,19 +967,23 @@ def client_requests_text_rewrite(raw_text):
972967 to http%3a%2f%2faccounts.google.com%2f233
973968 """
974969 replaced = regex_request_rewriter .sub ('\g<origin_domain>' , raw_text )
975- replaced = replaced .replace (my_host_name_urlencoded , target_domain )
976- replaced = replaced .replace (my_host_name_no_port , target_domain )
970+ # replaced = replaced.replace(my_host_name_urlencoded, target_domain)
971+ # replaced = replaced.replace(my_host_name_no_port, target_domain)
972+
973+ # 32MB == 33554432
974+ replaced = client_requests_bin_rewrite (replaced .encode (), max_len = 33554432 ).decode ()
975+
977976 if verbose_level >= 3 and raw_text != replaced :
978977 dbgprint ('ClientRequestedUrl: ' , raw_text , '<- Has Been Rewrited To ->' , replaced )
979978 return replaced
980979
981980
982- def client_requests_bin_rewrite (raw_bin ):
981+ def client_requests_bin_rewrite (raw_bin , max_len = 8192 ):
983982 """
984983
985984 :type raw_bin: byte
986985 """
987- if raw_bin is None or len (raw_bin ) > 8192 :
986+ if raw_bin is None or len (raw_bin ) > max_len :
988987 return raw_bin
989988 else :
990989 _str_buff = my_host_name + '/extdomains'
0 commit comments