在公司代理后面使用python脚本下载文件

时间:2019-03-29 10:48:27

标签: python python-3.x shell if-statement output

我正在整理一个脚本,该脚本将从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)

1 个答案:

答案 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)