Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2019, 12:50   #1
Sasha_2020
Новичок
Джуниор
 
Регистрация: 22.07.2019
Сообщений: 5
По умолчанию Читать построчно прокси для чека заголовков http

Доброе время суток!
Нужна ваша помощь в таком вопросе:
Хочу получить с 1.txt файла с проксями вывод в др. 2.txt о их заголовках http

Проблема заключается в том что не получается запустить с циклом for

Так вот если просто подставить ссылку то работает как мне нужно :
Код:
import requests

site = ('http://31.148.103.65:81')
headers = requests.get(site).headers
s = open ("2.txt","a")
s.write (headers['Server']+ ' '+(site))
s.close()
содержание 1.txt (с проксями)
Код:
http://82.209.197.187:8080
http://188.35.9.26:2051
http://109.106.138.172:1234
http://178.124.182.25:7005
http://37.195.142.12:81
http://178.49.167.58:81
Sasha_2020 вне форума Ответить с цитированием
Старый 22.07.2019, 14:48   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,334
По умолчанию

Вероятно, что проблема с символом конца строки, который попадает в строку с адресом при чтении из файла.
Предлагается такая версия:
Код:
import requests
s = open('2.txt','a')
for line in open('1.txt'):
    site = line.rstrip()
    headers = requests.get(site).headers
    s.write (headers['Server']+ ' '+(site)+'\n')
s.close()
Но вполне возможно, что есть и другие способы избавиться от 'хвоста'.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 22.07.2019, 16:08   #3
Sasha_2020
Новичок
Джуниор
 
Регистрация: 22.07.2019
Сообщений: 5
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Вероятно, что проблема с символом конца строки, который попадает в строку с адресом при чтении из файла.
Предлагается такая версия:
Код:
import requests
s = open('2.txt','a')
for line in open('1.txt'):
    site = line.rstrip()
    headers = requests.get(site).headers
    s.write (headers['Server']+ ' '+(site)+'\n')
s.close()
Но вполне возможно, что есть и другие способы избавиться от 'хвоста'.
Спасибо большое! , работает но есть еще одна проблема -
если в списке файла с прокси попадаются не рабочие , то цикл прекращается и все нижние строки не выводятся в файл 2.txt
может нужно условие и оператор continue ?
Sasha_2020 вне форума Ответить с цитированием
Старый 22.07.2019, 16:57   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,334
По умолчанию

Посмотрите на сообщение об ошибке и попробуйте try (обработка исключений).

PS: Я не питоновед. Так, учусь.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 22.07.2019, 20:08   #5
Sasha_2020
Новичок
Джуниор
 
Регистрация: 22.07.2019
Сообщений: 5
По умолчанию

Пробовал с try не выход что-то..
не могу прописать условие пока не знаю ошибки иле кода на каком идет остановка скрипта ..
Так что вопрос все еще открыт!
Помогите пожалуйста разобратся!
Sasha_2020 вне форума Ответить с цитированием
Старый 22.07.2019, 21:51   #6
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,334
По умолчанию

Тут https://khashtamov.com/ru/python-requests/нашёл такое решение:
Код:
import requests
s = open('2.txt','a')
for line in open('1.txt'):
    site = line.rstrip()
    try:
        headers = requests.get(site).headers
    except requests.exceptions.ConnectionError:
        s.write ('ConnectionError' + ' '+(site)+'\n')
        print('Seems like dns lookup failed..')
        continue    
    s.write (headers['Server']+ ' '+(site)+'\n')
s.close()
У меня срабатывает, но насколько это хорошо в вашем случае?
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 23.07.2019, 02:36   #7
Sasha_2020
Новичок
Джуниор
 
Регистрация: 22.07.2019
Сообщений: 5
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
У меня срабатывает, но насколько это хорошо в вашем случае?
Спасибо, попробовал , но не хочет..
вот что мне нужно (пример):
Код:
http://31.148.103.65:81
http://93.125.53.105:8086
http://82.209.197.187:8080
http://192.168.1.1:80  #эта не рабочая
http://188.35.9.26:2051#эта рабочая, но к ней уже не доходит..
нашел ответ вот так работает без остановок:

Код:
import requests
 
headers = {
            'Connection':'keep-alive',
            'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 OPR/45.0.2552.898',
            'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
            'Accept-Encoding':'gzip, deflate, lzma, sdch',
            'Accept-Language':'ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4',
            'Upgrade-Insecure-Requests':'1',
            'DNT':'1',
           }
 
with open ("Out.txt","a") as f:
    error = ''
    for line in open('IPs.txt'):
        try:
            line = line.strip()
            req = requests.get(line,headers=headers,timeout=(10,10))
            status = req.status_code
            server = req.headers.get('Server','')
            f.write(' '.join([server,line,'\n']))
        except requests.exceptions.RequestException as err:
            status = ''
            error = err
        finally:
            print('{:30}:{:3}:{}'.format(line,status,error or server))

Последний раз редактировалось Sasha_2020; 23.07.2019 в 06:01.
Sasha_2020 вне форума Ответить с цитированием
Старый 24.07.2019, 08:30   #8
Sasha_2020
Новичок
Джуниор
 
Регистрация: 22.07.2019
Сообщений: 5
По умолчанию

Хотелось бы еще этому коду прикрутить многопоточность (хоть на 10 потоков)
помогите кто сможет решить пожалуйста!
видел примеры в др. сканерах , но нигде не видел с get запросом как сделать..
Sasha_2020 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IdIRC + HTTP-прокси Zer0 Работа с сетью в Delphi 0 07.12.2011 11:51
TWSocket и HTTP прокси sxcine Работа с сетью в Delphi 0 06.11.2011 19:49
прокси через http var PHP 1 08.10.2011 22:05
Сниффер Http заголовков REALIST07 Помощь студентам 1 23.03.2011 14:37
Http Proxy - как написать к браузеру http-прокси? SergeiGuk Общие вопросы .NET 0 21.05.2010 17:37