42
42
errprint ('Can Not Create Local File Cache: ' , e , ' local file cache is disabled automatically.' )
43
43
local_cache_enable = False
44
44
45
- __VERSION__ = '0.18.4 -dev'
45
+ __VERSION__ = '0.18.5 -dev'
46
46
__author__ = 'Aploium <i@z.codes>'
47
47
48
48
# ########## Basic Init #############
60
60
myurl_prefix = my_host_scheme + my_host_name
61
61
myurl_prefix_escaped = myurl_prefix .replace ('/' , r'\/' )
62
62
cdn_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 )
64
65
# ## Get Target Domain's Root Domain ##
65
66
_temp = target_domain .split ('.' )
66
67
if 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''):
731
732
assert isinstance (resp , Response )
732
733
for header_key in requests_response_obj .headers :
733
734
# 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 :
739
736
resp .headers [header_key ] = response_text_rewrite (requests_response_obj .headers [header_key ])
737
+
740
738
# Rewrite The Set-Cookie Header, change the cookie domain to our domain
741
739
if header_key .lower () == 'set-cookie' :
742
740
# cookie_header_str = dump_cookie_jars_to_header_string_dict(requests_response_obj.cookies)
@@ -950,11 +948,8 @@ def extract_client_header():
950
948
head_name_l = head_name .lower ()
951
949
if (head_name_l not in ('host' , 'content-length' , 'content-type' )) \
952
950
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 )
954
952
955
- # rewrite referer head if we have
956
- if 'referer' in outgoing_head :
957
- outgoing_head ['referer' ] = client_requests_text_rewrite (outgoing_head ['referer' ])
958
953
if verbose_level >= 3 : dbgprint ('FilteredRequestHeaders:' , outgoing_head )
959
954
return outgoing_head
960
955
@@ -972,19 +967,23 @@ def client_requests_text_rewrite(raw_text):
972
967
to http%3a%2f%2faccounts.google.com%2f233
973
968
"""
974
969
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
+
977
976
if verbose_level >= 3 and raw_text != replaced :
978
977
dbgprint ('ClientRequestedUrl: ' , raw_text , '<- Has Been Rewrited To ->' , replaced )
979
978
return replaced
980
979
981
980
982
- def client_requests_bin_rewrite (raw_bin ):
981
+ def client_requests_bin_rewrite (raw_bin , max_len = 8192 ):
983
982
"""
984
983
985
984
:type raw_bin: byte
986
985
"""
987
- if raw_bin is None or len (raw_bin ) > 8192 :
986
+ if raw_bin is None or len (raw_bin ) > max_len :
988
987
return raw_bin
989
988
else :
990
989
_str_buff = my_host_name + '/extdomains'
0 commit comments