我正在整理一个脚本,该脚本将从Web上下载文件....但是有些人坐在公司的防火墙中,这意味着如果您是@home,则下面的代码有效,但是如果您在办公室中,除非您手动设置代理变量然后运行...否则将挂起。
我在想的是创建一条if语句... if语句将检查用户的IP地址,以及他们的用户是否具有8.x或9.x或7.x的IP地址,然后使用此代理。 ..否则,请忽略并继续下载
我在此下载中使用的代码如下...我对此很陌生,所以我不确定如何对IP执行if语句,然后使用代理服务器,所以任何帮助都很好
import urllib.request
import shutil
import subprocess
import os
from os import system
url = "https://downloads.com/App.exe"
output_file = "C:\\User\\Downloads\\App.exe"
with urllib.request.urlopen(url) as response, open(output_file, 'wb') as out_file:
shutil.copyfileobj(response, out_file)
答案 0 :(得分:0)
您可以按照@nickthefreak的注释读取本地IP,然后使用requests lib建立代理:
import socket
import requests
URL = 'https://downloads.com/App.exe'
if socket.gethostbyname(socket.gethostname()).startswith(('8', '9', '7')):
r = requests.get(URL, stream=True, proxies={'http': 'http://10.10.1.10:3128', 'https': 'http://10.10.1.10:1080'})
else:
r = requests.get(URL, stream=True)
with open('C:\\User\\Downloads\\App.exe', 'wb') as f:
for chunk in r:
f.write(chunk)