urllib2 прочитал ответ более одного раза - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь изменить класс подключения SQLmap (https://github.com/sqlmapproject/sqlmap/blob/master/lib/request/connect.py) для удовлетворения моих потребностей.

Что я хочу сделать, это проверить, содержит ли ответ «CAUGHT BY WAF», и повторять этот запрос, пока он не будет содержать его.

Итак, после строки 471 я добавил:

conn = urllib2.urlopen(req)
while('CAUGHT BY WAF' in conn.read()):
   conn = urllib2.urlopen(req)

Однако это не работает, потому что после выполнения conn.read() SQLmap не сможет снова прочитать ответ, как вы можете сделать это только один раз.

П.С .: Я пытался использовать глубокую копию:

conn = urllib2.urlopen(req)
conn2 = copy.deepcopy(conn)
while('CAUGHT BY WAF' in conn2.read()):
   conn = urllib2.urlopen(req)
   conn2 = conn

но все равно не работает (не знаю почему !!)

Итак, мой вопрос: как я могу сделать conn.read() более одного раза?

Спасибо!

1 Ответ

0 голосов
/ 14 мая 2018

Вызов отправляет вам поток, поэтому, если вы хотите использовать данные несколько раз, вы можете сохранить их во временном файле и проанализировать их оттуда.

content = conn.read()
file.write(content)
...