regretter
regretter

Reputation: 27

Python program to find active port on a website?

My college has some ports. Something like this http://www.college.in:913 I want a program to find the active ones. I mean I want those port number in which the website is working. Here is a code. But it takes a lot of time.

from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError
for i in range(1,10000):
  req = Request("http://college.edu.in:"+str(i))
  try:
     response = urlopen(req)

  except URLError as e:
     print("Error at port"+str(i) )
  else:
     print ('Website is working fine'+str(i))

Upvotes: 2

Views: 880

Answers (1)

Joshua Smith
Joshua Smith

Reputation: 6621

It might be faster to try open a socket connection to each port in the range and then only try to make a request if the socket is actually open. But it's often slow to iterate through a bunch of ports. if it takes 0.5 seconds for each, and you're scanning 10000 ports that's a lot of time waiting.

# create an INET, STREAMing socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# now connect to the web server on port 80 - the normal http port
s.connect(("www.python.org", 80))
s.close()

from https://docs.python.org/3/howto/sockets.html

You might also consider profiling the code and finding out where the slow parts are.

Upvotes: 1

Related Questions