Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/05/2015, 03:57
varondan
 
Fecha de Ingreso: mayo-2015
Mensajes: 4
Antigüedad: 9 años
Puntos: 0
duda API Phyton

Hola a todos

Necesitaría de vuestra ayuda para terminar de crear un script en phyton para modificar por API ciertas variables.
No soy ducho en programación y me he atascado.

Tengo un script para obtener datos, pero necesito otro para añadir por el API

Esto es lo que he creado, pero no funciona y no tengo mensajes de cual es el error o que falta.
..................
Código Python:
Ver original
  1. #!/usr/bin/python
  2.  
  3. import os,sys,string
  4. import httplib, urllib
  5. import json
  6.  
  7. # Variables globales estaticas
  8. SERVER = "my.site.com"
  9. PAGE_SIZE = 125
  10. PAGE_NUM = 0
  11.  
  12.  
  13. URI = "/api/prov/v1/sites/configure/acl"
  14. api_id = "xxxxx"
  15. api_key = "xxxxxxxxxx"
  16. site_id = "xxxxx"
  17. rule_id = "api.acl.blacklisted_ips"
  18. ips = "44.44.44.44,66.66.66.66"
..................


Este es el script que recopila información y en el que me he basado, sabiendo que funciona:
..................
Código Python:
Ver original
  1. #!/usr/bin/python
  2.  
  3. import os,sys,string
  4. import httplib, urllib
  5. import json,requests
  6.  
  7. # Variables globales estaticas
  8. SERVER_INCAPSULA = "my.incapsula.com"
  9. PAGE_SIZE = 125
  10. PAGE_NUM = 0
  11.  
  12. def getBandwidthSite(site_id):
  13.  
  14.   c = httplib.HTTPSConnection(SERVER)
  15.   if (time_range == "custom"):
  16.      params = urllib.urlencode({'api_id':api_id,'api_key':api_key,'site_id':site_id,'stats':'bandwidth_timeseries','time_range':time_range,'start':start_time,'end':end_time})
  17.   else :
  18.      params = urllib.urlencode({'api_id':api_id,'api_key':api_key,'site_id':site_id,'stats':'bandwidth_timeseries','time_range':time_range})
  19.   headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
  20.   c.request("POST", "/api/stats/v1",params,headers)
  21.   response = c.getresponse()
  22.   data = response.read()
  23.   c.close()
  24.   json_data = json.loads(data)
  25.   total = 0
  26.  
  27.   for i in json_data["bandwidth_timeseries"][0]["data"]:
  28.     cont = 0
  29.     for j in i:
  30.        cont+=1
  31.        if (cont%2 == 0):
  32.             total=total+j
  33.             #print "total bytes:%s" %total
  34.  
  35.   return total
  36.  
  37.  
  38. def getSitesList():
  39.  
  40.   # Devuelve una lista con los sites que hay en esa cuenta
  41.   # con los valores de api_id y api_key ya sabe el account_id
  42.   URI = "/api/prov/v1/sites/list"
  43.   c = httplib.HTTPSConnection(SERVER)
  44.   params = urllib.urlencode({'api_id':api_id,'api_key':api_key,'page_size':PAGE_SIZE,'page_num':PAGE_NUM})
  45.   headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
  46.   c.request("POST", URI,params,headers)
  47.   response = c.getresponse()
  48.   data = response.read()
  49.   c.close()
  50.   json_data = json.loads(data)
  51.   #  print "Site_id = %s" %json_data["sites"][1]["site_id"]
  52.   #  print "Domain = %s" %json_data["sites"][1]["domain"]  
  53.   site_id_list= []
  54.   domain_list = []
  55.   for i in json_data["sites"]:
  56.      #print "Site_id => %s" %i["site_id"]
  57.      #print "Domain => %s" %i["domain"]
  58.      site_id_list.append(i["site_id"])
  59.      domain_list.append(i["domain"])
  60.   return site_id_list,domain_list
  61.  
  62.  
  63. def getVisits(site_id):
  64.  
  65.   c = httplib.HTTPSConnection("my.incapsula.com")
  66.   if (time_range == "custom"):
  67.      params = urllib.urlencode({'api_id':api_id,'api_key':api_key,'site_id':site_id,'stats':'visits_timeseries','time_range':time_range,'start':start_time,'end':end_time})
  68.   else :
  69.      params = urllib.urlencode({'api_id':api_id,'api_key':api_key,'site_id':site_id,'stats':'visits_timeseries','time_range':time_range})
  70.   headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
  71.   c.request("POST", "/api/stats/v1",params,headers)
  72.   response = c.getresponse()
  73.   data = response.read()
  74.   c.close()
  75.   json_data = json.loads(data)
  76.   visitas_humanas = 0
  77.  
  78.   for i in json_data["visits_timeseries"][0]["data"]:  # visitas humanas
  79.     cont = 0
  80.     for j in i:
  81.        cont+=1
  82.        if (cont%2 == 0):
  83.             visitas_humanas=visitas_humanas+j
  84.             #print "total visitas humanas :%s" %visitas_humanas
  85.  
  86.   visitas_bots = 0
  87.   for i in json_data["visits_timeseries"][1]["data"]:  # visitas bots
  88.     cont = 0
  89.     for j in i:
  90.        cont+=1
  91.        if (cont%2 == 0):
  92.             visitas_bots=visitas_bots+j
  93.             #print "total visitas bots :%s" %visitas_bots
  94.  
  95.  
  96.   return visitas_humanas,visitas_bots,visitas_humanas+visitas_bots
  97.  
  98.  
  99.  
  100. def getHits(site_id):
  101.  
  102.   c = httplib.HTTPSConnection("my.site.com")
  103.  
  104.   if (time_range == "custom"):
  105.      params = urllib.urlencode({'api_id':api_id,'api_key':api_key,'site_id':site_id,'stats':'hits_timeseries','time_range':time_range,'start':start_time,'end':end_time})
  106.   else :
  107.      params = urllib.urlencode({'api_id':api_id,'api_key':api_key,'site_id':site_id,'stats':'hits_timeseries','time_range':time_range})
  108.   headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
  109.   c.request("POST", "/api/stats/v1",params,headers)
  110.   response = c.getresponse()
  111.   data = response.read()
  112.   c.close()
  113.   json_data = json.loads(data)
  114.   hits_humanos = 0
  115.  
  116.   for i in json_data["hits_timeseries"][0]["data"]:  # hits humanos
  117.     cont = 0
  118.     for j in i:
  119.        cont+=1
  120.        if (cont%2 == 0):
  121.             hits_humanos=hits_humanos+j
  122.             #print "total hits humanos :%s" %hits_humanos
  123.  
  124.   hits_bots = 0
  125.   for i in json_data["hits_timeseries"][1]["data"]:  # hits bots
  126.     cont = 0
  127.     for j in i:
  128.        cont+=1
  129.        if (cont%2 == 0):
  130.             hits_bots=hits_bots+j
  131.            # print "total hits bots :%s" %hits_bots
  132.  
  133.  
  134.   return hits_humanos,hits_bots,hits_humanos+hits_bots
  135.  
  136.  
  137. def generateCSVReport():
  138.   file = open("./report.csv","w")
  139.   file.write("Site,Human Visits,Bot Visits,Total Visits,Hits,Bandwidth (MB),SQL Injection,Illegal Resource Access,Cross Site Scripting,Bad Bots,DDoS\n")
  140.   j = 0
  141.   for site in lista_sites[0]:
  142.      #print "Site: %s (%s) => Ancho de banda (%s)" %(lista_sites[1][j],site,getBandwidthSite(site))
  143.      visitas_list = getVisits(site)
  144.      hits_list = getHits(site)
  145.      threat_list = getThreats(site)
  146.      bandwidth = round(getBandwidthSite(site)/float(1024*1024),2)
  147.      domain = lista_sites[1][j]
  148.      file.write(domain+" (" + str(site) + ")," + str(visitas_list[0]) + "," + str(visitas_list[1]) + "," + str(visitas_list[2]) + "," + str(hits_list[2]) + "," + str(bandwidth) + ","  + str(threat_list[0]) + "," + str(threat_list[1]) + "," + str(threat_list[2]) + "," + str(threat_list[3]) + "," + str(threat_list[4]) + "\n")
  149.      j+=1
  150.      print "%s/%s Sites Completados: %s " %(j,len(lista_sites[0]),lista_sites[1][j-1])
  151.  
  152.   file.close()
  153.   return
  154.  
  155.  
  156. def getThreats(site_id):
  157.  
  158.   c = httplib.HTTPSConnection("my.site.com")
  159.   if (time_range == "custom"):
  160.      params = urllib.urlencode({'api_id':api_id,'api_key':api_key,'site_id':site_id,'stats':'threats','time_range':time_range,'start':start_time,'end':end_time})
  161.   else :
  162.      params = urllib.urlencode({'api_id':api_id,'api_key':api_key,'site_id':site_id,'stats':'threats','time_range':time_range})
  163.   headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
  164.   c.request("POST", "/api/stats/v1",params,headers)
  165.   response = c.getresponse()
  166.   data = response.read()
  167.   c.close()
  168.   json_data = json.loads(data)
  169.   sql_injection = 0
  170.   illegal_resource = 0
  171.   xss = 0
  172.   bad_bots = 0
  173.   ddos = 0
  174.  
  175.  
  176.    
  177. #  print "XSS -> %s" %xss
  178.   return sql_injection,illegal_resource,xss,bad_bots,ddos
  179.  
  180.  
  181.  
  182. if __name__ == "__main__" :
  183.  
  184.   api_id = "xxxxxx"
  185.   api_key = "xxxxxxxxxxxxx"
  186.  
  187.  
  188.   # 1 de Enero 2015 a las 00:00:00h en milisegundos
  189.   #start_time = "1420070400000"
  190.   # 31 de Enero 2015 a las 23.59.59h en milisegundos
  191.   #end_time = "1422748799000"
  192.   start_time = "1428883200000"
  193.   end_time = "1429487999000"
  194.   time_range = "custom"
  195.   lista_sites = getSitesList()
  196.   generateCSVReport()
  197.  
  198.   # Probar un site especifico
  199.   ##visitas = getVisits("1872262")
  200.   ##print "Visitas humanas => %s " %visitas[0]
  201.   ## print "Visitas bots => %s " %visitas[1]
  202.   ##print "Total Visitas => %s " %visitas[2]
  203.  
  204.  
  205.   #  print "lista de dominios => %s" %lista_sites[1]i
  206.   #  print "site id => %s " %lista_sites[0]i
  207.   #j = 0
  208.   #for site in lista_sites[0]:
  209.   #   print "Site: %s (%s) => Ancho de banda (%s)" %(lista_sites[1][j],site,getBandwidthSite(site))
  210.   #   j+=1
  211.  
  212.  
  213.   #for site in lista_sites[0]:
  214.   #    visitas_list = getVisits(site)
  215.   #    print "Visitas humanas => %s " %visitas_list[0]
  216.   #    print "Visitas bots => %s " %visitas_list[1]
  217.   #    print "Total Visitas => %s " %visitas_list[2]
  218.    
  219.   #hits_list = getHits(site)
  220.   #for site in lista_sites[0]:
  221.   #    print "Hits humanos => %s " %hits_list[0]
  222.   #    print "Hits bots => %s " %hits_list[1]
  223.   #    print "Hits Totales => %s " %hits_list[2]
  224.  
  225.   #threats_list = getThreats(site)
  226.   #for site in lista_sites[0]:
  227.   #    print "SQLi => %s " %threats_list[0]
  228.   #    print "Illegal Resource => %s " %threats_list[1]
  229.   #    print "XSS => %s " %threats_list[2]
  230.   #    print "Bad Bots => %s " %threats_list[3]
.................

Última edición por AlvaroG; 20/05/2015 a las 09:47 Razón: highlight