import
requests
import
re
from
datetime
import
datetime, timedelta
url
=
'https://www.rarlab.com/'
response
=
requests.get(url)
response.raise_for_status()
pattern
=
r
'href="(/rar/winrar-x64-[^"]+sc\.exe)"[^>]*>Chinese Simplified<'
match
=
re.search(pattern, response.text, re.IGNORECASE)
if
match:
download_link
=
f
"https://www.rarlab.com{match.group(1)}"
print
(f
"找到下载链接: {download_link}"
)
head_response
=
requests.head(download_link)
server_date
=
head_response.headers.get(
'Last-Modified'
)
if
server_date:
server_date
=
datetime.strptime(server_date,
'%a, %d %b %Y %H:%M:%S %Z'
)
print
(f
"文件在服务器的时间: {server_date}"
)
target_date
=
server_date
-
timedelta(days
=
30
)
file_name
=
match.group(
1
).split(
'/'
)[
-
1
]
for
i
in
range
(
60
):
new_date_str
=
target_date.strftime(
'%Y%m%d'
)
new_url_x64
=
f
"https://www.win-rar.com/fileadmin/winrar-versions/sc/sc{new_date_str}/wrr/{file_name}"
new_url_x32
=
new_url_x64.replace(
'x64'
,
'x32'
)
print
(f
"尝试访问: {new_url_x64}"
)
head_response_x64
=
requests.head(new_url_x64)
if
head_response_x64.status_code
=
=
200
:
print
(f
"x64 文件存在: {new_url_x64}"
)
download_response_x64
=
requests.get(new_url_x64)
download_response_x64.raise_for_status()
with
open
(file_name,
'wb'
) as
file
:
file
.write(download_response_x64.content)
print
(f
"x64 文件已下载到当前目录: {file_name}"
)
head_response_x32
=
requests.head(new_url_x32)
if
head_response_x32.status_code
=
=
200
:
print
(f
"x32 文件存在: {new_url_x32}"
)
download_response_x32
=
requests.get(new_url_x32)
download_response_x32.raise_for_status()
file_name_x32
=
file_name.replace(
'x64'
,
'x32'
)
with
open
(file_name_x32,
'wb'
) as
file
:
file
.write(download_response_x32.content)
print
(f
"x32 文件已下载到当前目录: {file_name_x32}"
)
else
:
print
(f
"x32 文件不存在: {new_url_x32}"
)
break
else
:
print
(f
"文件不存在: {new_url_x64}"
)
target_date
+
=
timedelta(days
=
1
)
else
:
print
(
"无法获取文件的服务器时间"
)
else
:
print
(
"未找到连接文字为'Chinese Simplified'的下载链接"
)