HTTP scraper efficiency with multiprocessing
Reading File

Here is a tip, while reading, the r is optional

f = open(r'\h.csv',"r")


can be written as

f = open(r'\h.csv')


Your whole reading block can use context managers (blocks using the with keyword).

with open(r'\h.csv', encoding='utf8') as f:
    cont = f.read()


If you are dealing with a huge text file, you might do:

with open(r'\h.csv', encoding='utf8') as f:
    for ip in f:
        ip = ip.rstrip('\n')
        .. verify


String

Using string formatting i.e. .format() can give a better idea of what's going on. It also eliminates the use of str() each time.
We can change this

print(list[k] + " MGMT" + ": " + str(ports[i]) + "  " + str(k))


to that

print("{} MGMT: {}  {}".format(list[k], ports[i], k))


and as from 3.6+, adding an f

print(f"{list[k]} MGMT: {ports[i]}  {k}")


Loop Iteration

In many other languages, you need the index while looping to have the element at this index. Python provides a nice and intuitive way to loop over elements

The current implementation:

ports = [443, 4433, 444, 433, 4343, 4444, 4443, 4434]
portlen = len(ports)
for i in range(portlen):
    print(ports[i])


But the pythonic way is:

ports = [443, 4433, 444, 433, 4343, 4444, 4443, 4434]
for port in ports:
    print(port)


port here gives you the element directly.
If ever you still want the index, you do:

for i, port in enumerate(ports):


where i is the index.

Miscellaneous

Here:

cpu = int(multiprocessing.cpu_count())


No need to cast to int as multiprocessing.cpu_count() already returns an integer. You can verify for int by type(multiprocessing.cpu_count())

Normally with .start(), you must include a .join(), as this allows all child processes to terminate before exiting.

for ...:
   ... .start()

for ...:
   ... .join()