私の英語が上手くなければごめんなさい。15秒ごとにサイトを開くことができるプログラムを書きたいです。ただし、別のIPで実行してください。つまり、IPのリストを取得し、15秒ごとにWebサイトを開きます。どうやってやったの?どのモジュールを使用する必要がありますか?ありがとうございます
1 に答える
15秒ごとに1つの接続を確実に切断する方法を尋ねている場合、各接続に数秒(場合によっては15秒以上)かかる場合でも、それは簡単です。15秒ごとに1つの接続しかないため、それぞれにスレッドを生成しない理由は実際にはありません。
それで:
def connectToSiteFunction(ip):
# your code to bind ip (if it's a source) or connect to it (if it's a dst)
# and do your thing here
def connectAndWait():
for ip in ips:
t = threading.Thread(target=connectToSiteFunction, args=(ip,))
yield t
t.start()
os.sleep(15)
threads = [t for t in connectAndWait()]
for t in threads:
t.join()
宛先IPについて話していて、リクエストごとに異なるIPを使用する方法を知りたい場合は、通常はURLを変更するだけです。このようなもの:
def connectToSiteFunction(ip):
url = 'http://{}/path/to/page.html'.format(ip)
# now open url as normal
選択したURLダウンロードライブラリに送信元アドレスをバインドする方法を尋ねる場合は、どのライブラリを指定する必要がありますが、次のようになります。ライブラリにパラメータがあるか、ライブラリに次の方法があります。工場を指定しsocket
ないと、不可能になります(socket.socket
自分の工場でモンキーパッチを適用したい場合を除く)。socket
ファクトリを指定できる場合、それを行う方法は次のとおりです。
def make_socket_factory(srcip):
def socket_factory():
s = socket.socket()
s.bind((srcip, 0))
return s
return socket_factory
make_socket_factory(srcip)
その後、工場として渡すだけです。
そもそもURLをダウンロードする方法を知りたい場合は、stdliburllib2
からtoまでrequests
、さまざまな方法があります。SO (および他の場所)では、それらを比較対照するための回答がすでにたくさんあります。pycurl
twisted