Skip to content

Instantly share code, notes, and snippets.

@vishnuvp
Last active April 6, 2020 15:28
Show Gist options
  • Save vishnuvp/34531b7099286e158959b28ef1082e04 to your computer and use it in GitHub Desktop.
Save vishnuvp/34531b7099286e158959b28ef1082e04 to your computer and use it in GitHub Desktop.
import requests
from bs4 import BeautifulSoup
import time
import random
import sys
url = "http://ec2-35-162-109-117.us-west-2.compute.amazonaws.com/"
def get_token(response_text):
soup = BeautifulSoup(response_text, 'lxml')
csrf_token = soup.select_one('input[name="csrf_token"]')['value']
return csrf_token
def get_url(response_text):
soup = BeautifulSoup(response_text, 'lxml')
url = soup.select_one('.book-name')
return url['href']
def get_contents(response_text):
soup = BeautifulSoup(response_text, 'lxml')
title = soup.select_one('input[name="title"]')['value']
author = soup.select_one('input[id="author"]')['value']
bid = soup.select_one('input[id="bid"]')['value']
genre = soup.select_one('input[id="genre"]')['value']
return bid, title, author, genre
def test(user):
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
headers = {'User-Agent': user_agent,
'Cache-Control': 'no-cache',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'
}
# Home page
response = requests.get(url,headers=headers)
#Login page
c_url = url+'login'
response = requests.get(c_url,headers=headers)
#Login
with requests.Session() as session:
data = {
# "csrf_token": csrf_token,
"username": user,
"password": "dogood"
}
post = session.post(c_url, data=data)
next_url = url + get_url(post.text)
response = session.get(next_url,headers=headers)
bid, title, author, genre = get_contents(response.text)
data = {
"bid": bid,
"title": title,
"author": author,
"genre": genre
}
response = session.post(next_url, headers=headers, data=data)
c_url = url+'logout'
response = session.get(c_url,headers=headers)
print(response.headers)
session.cookies.clear()
if __name__ == '__main__':
cnt = 0
while(cnt < 1000):
cnt += 1
test(sys.argv[1].strip())
m = random.randint(1,15)
print("Next try in", m, "minutes")
time.sleep(m*60)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment