• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Bag Bounty проблема с индексом

dream to perfection

Green Team
11.06.2022
59
35
BIT
1
Приветствую. Недавно начал читать данную книгу(баг баунти) и я дошел до парсера.
Как говорит автор:


1670868314915.png


это просто парсер который собирает список сайтов. Написал код и вот такая ошибка выходит:

1670868389496.png


а вот сам код:

Python:
from bs4 import BeautifulSoup as sp
import requests
url = "https://www.vulnerability-lab.com/list-of-bug-bounty-programs.php"
webpage = requests.get(url=url) # отправить get запрос
soup = sp(webpage.content,'html.parser')
tables = soup.find_all('table')
a_tags = tables[4].find_all('a')


sites_list = open("bug-bounty-sites.txt","w")
for a in a_tags:
    sites_list.write(a.get('href')+'\n')


и сайт на котором нужно запарсить -
 
Решение
У нас есть хороший курс по Python, приходите, научим )

Поправил код:


Python:
import requests
from bs4 import BeautifulSoup


def get_page_data(html):
    soup = BeautifulSoup(html.text, 'html.parser')
    tables = soup.find_all('table')
    a_tags = tables[4].find_all('a')

    sites_list = open("bug-bounty-sites.txt", "w")
    for a in a_tags:
        sites_list.write(a.get('href')+'\n')


if __name__ == '__main__':
    url = 'https://www.vulnerability-lab.com/list-of-bug-bounty-programs.php'
    headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 5.1.1; SM-G928X Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36'}
    page = requests.get(url, headers=headers)
    get_page_data(page)

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Это не проблема с индексом, а проблема в незнании пайтона ) Скорее всего сайт определяет что запрос делает программа и отдаёт ошибку 403 - Forbidden: Access is denied.
Не нужно тупо копировать из книжки скрипты, так как парсер настраивается под каждый сайт индивидуально.

P.S. Проверил, так и есть - 403. Лечится легко, нужно добавить в код юзерагента.

78.png
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
У нас есть хороший курс по Python, приходите, научим )

Поправил код:


Python:
import requests
from bs4 import BeautifulSoup


def get_page_data(html):
    soup = BeautifulSoup(html.text, 'html.parser')
    tables = soup.find_all('table')
    a_tags = tables[4].find_all('a')

    sites_list = open("bug-bounty-sites.txt", "w")
    for a in a_tags:
        sites_list.write(a.get('href')+'\n')


if __name__ == '__main__':
    url = 'https://www.vulnerability-lab.com/list-of-bug-bounty-programs.php'
    headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 5.1.1; SM-G928X Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36'}
    page = requests.get(url, headers=headers)
    get_page_data(page)
 
Решение

dream to perfection

Green Team
11.06.2022
59
35
BIT
1
Это не проблема с индексом, а проблема в незнании пайтона ) Скорее всего сайт определяет что запрос делает программа и отдаёт ошибку 403 - Forbidden: Access is denied.
Не нужно тупо копировать из книжки скрипты, так как парсер настраивается под каждый сайт индивидуально.

P.S. Проверил, так и есть - 403. Лечится легко, нужно добавить в код юзерагента.

Посмотреть вложение 65040
Так вот оно как, почему мне это в голову не пришло. Проблема в том что автор не указал об этом по поводу юзерагента и он меня не пускал. Может быть я действительно слаб по питону. Спасибо большое!
 

dream to perfection

Green Team
11.06.2022
59
35
BIT
1
У нас есть хороший курс по Python, приходите, научим )

Поправил код:


Python:
import requests
from bs4 import BeautifulSoup


def get_page_data(html):
    soup = BeautifulSoup(html.text, 'html.parser')
    tables = soup.find_all('table')
    a_tags = tables[4].find_all('a')

    sites_list = open("bug-bounty-sites.txt", "w")
    for a in a_tags:
        sites_list.write(a.get('href')+'\n')


if __name__ == '__main__':
    url = 'https://www.vulnerability-lab.com/list-of-bug-bounty-programs.php'
    headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 5.1.1; SM-G928X Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36'}
    page = requests.get(url, headers=headers)
    get_page_data(page)
Спасибо большое!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!