Hello guys I am making a bot in python requests to register a site and verify phone number however when I want to extract cookies I only get it like this this is one of the cookies: {'__cf_bm': 'Y0T3GzPQqXsWAnmYUSNWoaEogoto8_OELyA_wo_FUqQ-1662189807-0-Adw17pUjv2YaGcp3ynR1CX3CvGY/4AMBCJWqCn0GIk2qbGXQPifeKXlo5IN+iaDCsqeXrTN32gNXpdybETEYT6U='}
I want to extract them like this for each cookie:
{
"name": "__cf_bm",
"value": "je.AFZpQXtMPL7oZPdgCV6Bo4UxCb3BqMYdu2L7Eol0-1662189210-0-ARq9RgTbX7ItgRQ6dBXYjEdvQS8/fP7JiVibVrHYspk37sUiN3mQOlnHBfkJdMG033inhnAIS92vthv8bLdeYYQ=",
"domain": ".yemeksepeti.com",
"hostOnly": false,
"path": "/",
"secure": true,
"httpOnly": true,
"sameSite": "no_restriction",
"session": false,
"firstPartyDomain": "",
"partitionKey": null,
"expirationDate": 1662191010,
"storeId": "firefox-default",
"id": 1
}
this is the reproducible for register and then get the cookies from requests:
import json
import time
import requests
import selenium.webdriver
import urllib3
import random
import string
import secrets
password_length = 13
password = secrets.token_urlsafe(password_length)
file1 = open("Original.txt", "w")
kacAdet = int(input('Kaç adet hesap kaydetmek istiyorsunuz?'))
proxies = {
'http': '23.229.62.241:3128',
}
def random_char(char_num):
return ''.join(random.choice(string.ascii_letters) for _ in range(char_num))
email = random_char(4)
print(random_char(4))
for i in range(kacAdet):
cookies = {
'dhhPerseusGuestId': '1661866956.4391864905.SzayaOAaKf',
'_gcl_au': '1.1.2045638547.1656310028',
'_pxvid': '60553c6b-f5df-11ec-b676-644a4b4e486e',
'_ga_W5PM07D07L': 'GS1.1.1661866956.12.1.1661871822.0.0.0',
'_ga': 'GA1.2.302729117.1656310029',
'_tq_id.TV-276372-1.c7a5': 'b3e61a11d2f82260.1656310030.0.1661871797..',
'__ssid': '288a4fe9f40bd5024bd37c43ed7b18f',
'_fbp': 'fb.1.1656310031494.1660145579',
'device_token': 'eyJhbGciOiJSUzI1NiIsImtpZCI6ImtleW1ha2VyLXZvbG8tZGV2aWNlLXlzLXRyIiwidHlwIjoiSldUIn0.eyJpZCI6Ijk2MzI1ZThhLTVjYmQtNDk3NC1iZmYzLTgzYjdjMWZhMDdiZSIsImNsaWVudF9pZCI6InZvbG8iLCJ1c2VyX2lkIjoidHI4anBkOHMiLCJleHBpcmVzIjo0ODA5OTEwMDQ0LCJ0b2tlbl90eXBlIjoiYmVhcmVyIiwic2NvcGUiOiJERVZJQ0VfVE9LRU4ifQ.qlV25H4fL5mN9uHVHK-0VGpC6UZziOMfxpY5EbDXRCPeitQY-dfks5CA60Qj59alrbna3Ew5SS96HZ7elMOCDWDk9Al3RSBDgCoZNhn10jVexrmqqVBebRZyF27qh49tb1WoGE5FzWvX0MvlZA-1fvXCciPsHlRuKzr6oKPr4iZ2ilRBye9YwClEdpnu2ymg19moJhZn8oDmVotNAnEOC4tsRC64nXHT14rnU3zNx6yds1eeIjImOM-1u99lxOjmbTuBkQJWNEUxucimnA2RUe3VmZKhFronpM46ChdZr0f8xU7hvxGCZ2NxSVlN-uN79oHYThIgcxbaP0NjPajRcg',
'ab.storage.userId.f767a324-7168-4b7e-8687-652a3ac864bd': '%7B%22g%22%3A%22TR_44270161%22%2C%22c%22%3A1661869740576%2C%22l%22%3A1661869740576%7D',
'ab.storage.deviceId.f767a324-7168-4b7e-8687-652a3ac864bd': '%7B%22g%22%3A%224c13c6a1-fbd2-04ec-5d84-b972ec0ba576%22%2C%22c%22%3A1656310045145%2C%22l%22%3A1656310045145%7D',
'_hjSessionUser_1543571': 'eyJpZCI6ImE2MGI0MTQ2LTAzMGQtNWUwOS05YjhmLWZmMGRjNGE4YjRlOCIsImNyZWF0ZWQiOjE2NTYzMTA3MDg3NzIsImV4aXN0aW5nIjp0cnVlfQ==',
'AppVersion': '0ff5617',
'_gid': 'GA1.2.267011508.1661808541',
'__cf_bm': 'tjx3_.dOiiolQhAxWstqrkSP1CKvO_S1N4p.0EeINK4-1661871791-0-AUZhgLbPnAeoeXTbqYZ9zWdoMEV/paQVlVDqhYwfMhjTEpAzR9DL6w/R9PJ/UunzV1kS0E5eHo3I23DtfqQbu2g=',
'dhhPerseusSessionId': '1661866956.9452682616.Q3sF0bSpb0',
'dhhPerseusHitId': '1661871837551.356435850558823550.x7vphunw0q',
'ab.storage.sessionId.f767a324-7168-4b7e-8687-652a3ac864bd': '%7B%22g%22%3A%226aa2e303-cb5c-e1cd-d63c-ae74f0ef9a28%22%2C%22e%22%3A1661873591540%2C%22c%22%3A1661869740577%2C%22l%22%3A1661871791540%7D',
'hl': 'tr',
'_pxhd': '7s9aESLpFRxZZKv6tpZw1ARL/WCcfDvZ/5vEGc7NJzvNODk0RH90lYQB4Eua5Kqza/RouLT9ZEDCwApCgb6LWA==:fdJxKPXZt-rd6WPHmuK4PmpAXFudob0AhmJ-XL04XjMoHApgWh/7FNngAW72wqaDqlEmfZDx6D2EV-3kuOsLqWb15qT-85pfWFSmnayR70k=',
'_px3': 'e298931c318130994efbdc870fa364efa1eab482a8e5234e8667c760ad79fba0:6SPR0+3825cPBG3QzlECszOACYSdPXJLRT/ifAegNKTC7Ky1is4UYFhA01ROdi9t5FPC67v5CjaqHtWa7tzTuQ==:1000:DVJEiHg7S1XrIagRXrM6VXHwU2ozpb8RE2lXnVttxjQFilQ+GEHfG07sM+9BqFSgi69SNwFOgo8/C3CALs2K5rm1G7jyBJ432cNubNkJx+jEy2YeDw5fFuUlytWWtZDt+qcrwX9wwFJi/j6POWqnm9j1aZuVEztpuZnSLs0D0QZBZV0qaOPaQwxJw9vLCsigsgKcWGAbfbRMvVKXx0Cevw==',
'pxcts': 'deb1b68a-2874-11ed-9c26-6c6e70485242',
'tooltip-reorder': 'true',
'_dc_gtm_UA-86673819-11': '1',
'_dd_s': 'logs=1&id=38095de6-1b84-4b17-a32c-c539cfaf0dca&created=1661871796050&expire=1661872741919',
'_pxff_fp': '1',
}
headers = {
'Host': 'www.yemeksepeti.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0',
'Accept': 'application/json',
'Accept-Language': 'tr-TR,tr;q=0.8,en-US;q=0.5,en;q=0.3',
'Content-Type': 'multipart/form-data; boundary=---------------------------19743795514118722864129047497',
'X-Requested-With': 'XMLHttpRequest',
'X-Device-Fingerprint': 'db5f21349eff189ec4f7664477e01cd4',
'X-Device': 'eyJhbGciOiJSUzI1NiIsImtpZCI6ImtleW1ha2VyLXZvbG8tZGV2aWNlLXlzLXRyIiwidHlwIjoiSldUIn0.eyJpZCI6Ijk2MzI1ZThhLTVjYmQtNDk3NC1iZmYzLTgzYjdjMWZhMDdiZSIsImNsaWVudF9pZCI6InZvbG8iLCJ1c2VyX2lkIjoidHI4anBkOHMiLCJleHBpcmVzIjo0ODA5OTEwMDQ0LCJ0b2tlbl90eXBlIjoiYmVhcmVyIiwic2NvcGUiOiJERVZJQ0VfVE9LRU4ifQ.qlV25H4fL5mN9uHVHK-0VGpC6UZziOMfxpY5EbDXRCPeitQY-dfks5CA60Qj59alrbna3Ew5SS96HZ7elMOCDWDk9Al3RSBDgCoZNhn10jVexrmqqVBebRZyF27qh49tb1WoGE5FzWvX0MvlZA-1fvXCciPsHlRuKzr6oKPr4iZ2ilRBye9YwClEdpnu2ymg19moJhZn8oDmVotNAnEOC4tsRC64nXHT14rnU3zNx6yds1eeIjImOM-1u99lxOjmbTuBkQJWNEUxucimnA2RUe3VmZKhFronpM46ChdZr0f8xU7hvxGCZ2NxSVlN-uN79oHYThIgcxbaP0NjPajRcg',
'Origin': 'https://www.yemeksepeti.com',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'Referer': 'https://www.yemeksepeti.com/login/new?step=registration',
}
data = '-----------------------------19743795514118722864129047497\r\nContent-Disposition: form-data; name="_target_path"\r\n\r\nhttps://www.yemeksepeti.com/\r\n-----------------------------19743795514118722864129047497\r\nContent-Disposition: form-data; name="customer[first_name]"\r\n\r\nmert\r\n-----------------------------19743795514118722864129047497\r\nContent-Disposition: form-data; name="customer[last_name]"\r\n\r\ndemir\r\n-----------------------------19743795514118722864129047497\r\nContent-Disposition: form-data; name="customer[email]"\r\n\r\nmertdemir' + email + str(i) + '#gmail.com\r\n-----------------------------19743795514118722864129047497\r\nContent-Disposition: form-data; name="customer[password]"\r\n\r\n'+str(password)+'\r\n-----------------------------19743795514118722864129047497\r\nContent-Disposition: form-data; name="customer[birthdate]"\r\n\r\n1999-10-01\r\n-----------------------------19743795514118722864129047497\r\nContent-Disposition: form-data; name="customer[terms_and_conditions_consent]"\r\n\r\nagreed\r\n-----------------------------19743795514118722864129047497\r\nContent-Disposition: form-data; name="customer[marketing_consent]"\r\n\r\nopt-in\r\n-----------------------------19743795514118722864129047497\r\nContent-Disposition: form-data; name="customer[marketing_sms_consent]"\r\n\r\nopt-in\r\n-----------------------------19743795514118722864129047497--\r\n'
response = requests.post('https://www.yemeksepeti.com/api/v1/customers/async_register', cookies=cookies,
headers=headers, data=data, verify=False)
my_cookies = requests.utils.dict_from_cookiejar(response.cookies)
print(my_cookies)
print(response.status_code)
Don't use dict_from_cookiejar but write own code to convert it.
for item in response.cookies:
print('name :', item.name)
print('value :', item.value)
print('domain:', item.domain)
print('path :', item.path)
# ... other attributes ...
print('---')
EDIT:
Eventually you can use __dict__ to get all attributes as dictionary.
for item in response.cookies:
print(item.__dict__)
You may also get original data as string and parse it on your own.
print( response.headers['Set-Cookie'] )
EDIT:
import json
all_items = []
for item in response.cookies:
all_items.append(tem.__dict__)
# --- write ---
text = json.dumps(all_items)
with open('data.json', 'w') as fh:
fh.write(text)
# --- read ---
with open('data.json') as fh:
text = fh.read()
all_items = json.loads(text)
Related
i am creating a custom tool for login bruteforce on web application for bug bounty hunting so i came to a bug on one web application which i had to create my own tool to bruteforce this is not a complete tool but i need solution for the current code for adding threads
import requests
import re
exploit = open('password.txt', 'r').readlines()
headers = {
'Host': 'TARGET.COM',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.5',
'Connection': 'close',
'Upgrade-Insecure-Requests': '1',
'Sec-Fetch-Dest': 'iframe',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-User': '?1'
}
for line in exploit:
params = {
'execution': '111u9342',
'client_id': 'client-23429df',
'tab_id': '234324',
}
password = line.strip()
http = requests.post('https://www.target.com/test',
params=params,
headers=headers,
data={'username':myname,'password':password},
verify=False,
proxies=proxies)
content = http.content
print("finished")
I am beginner in python
You can use it ThreadPoolExecuter;
from concurrent.futures import ThreadPoolExecutor
import requests
# ....Other code parts...
def base_post(url, header, data, proxies, timeout=10):
response = requests.post(url, headers=header, data=data, proxies=proxies, timeout=timeout)
return response
total_possibilities = []
exploit = []
for line in exploit:
params = {
'execution': '111u9342',
'client_id': 'client-23429df',
'tab_id': '234324',
}
password = line.strip()
total_possibilities.append({'url': "...",
"params": params,
"headers": headers,
"data": {'username': myname, 'password': password},
"verify": False,
"proxies": proxies
"content": http.content})
results = []
with ThreadPoolExecutor(max_workers=3) as executor:
for row in total_possibilities:
results.append(executor.submit(base_post, **row))
print(results)
Don't forget to update "max_workers" based on your needs.
import requests
import json
from woocommerce import API
url2 = "http://ssl.autovit.ro/api/open/account/adverts"
url4 = "https://www.autovit.ro/api/open/imageCollections"
wcapi = API(
I wont show this, of course
)
r = wcapi.get('products?category=1880')
r = r.json()
print("Request sent Successfull!")
#r_string=r.text
### Request de generare si capturare token client
url = "https://www.autovit.ro/api/open/oauth/token"
payload = """
------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data;
name=\"client_id\"\r\n\r\n576\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data;
name=\"client_secret\"\r\n\r\33333\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data;
name=\"grant_type\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data;
name=\"username\"\r\n\r\n55555\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data;
name=\"password\"\r\n\r\n5555\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--
"""
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'User-Agent': "PostmanRuntime/7.15.0",
'Accept': "*/*",
'Cache-Control': "no-cache",
'Postman-Token': "08d86f5e-fcdb-4fdb-a570-b044e1ce2a4a,98ba3d2d-7a6f-4eaf-9c85-4512febf51d5",
'Host': "www.autovit.ro",
'cookie': "PHPSESSID=8ppb0muarimpt14g10nnq9j6qi; user_id=3235571; id_token=eyJraWQiOiJDY3ZTY1ljRE5MS294RzRFMktPSTltcU5zczJxcmN4dENWaG5Xd2JYNlEwPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIxZGZhNTA1ZS1kMzU1LTQ2NDEtOTA5My01ZTFmZDQ5MDgwMWUiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tXC9ldS13ZXN0LTFfMTRNVnJ2bGhUIiwicGhvbmVfbnVtYmVyX3ZlcmlmaWVkIjpmYWxzZSwiY29nbml0bzp1c2VybmFtZSI6ImU5MTYxNzNlLTQyZGItNDExYy04MGRlLTZmNDI1MTFkMjQzZCIsImxvY2FsZSI6InJvIiwiYXVkIjoiNTE5Z2YycjQ2cDhoMWJxaW12Mm1kbWJzc2YiLCJldmVudF9pZCI6IjU4MzhjOWYwLTBkMGUtNDdkZC1iY2M3LTg4N2E0MTU1Mjc1MyIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNjA3NTI4MTk1LCJleHAiOjE2MDc1MzE3OTUsImlhdCI6MTYwNzUyODE5NSwiZW1haWwiOiJtdWx0aWNvbWF1dG9AeWFob28uY29tIn0.HBalbgWl-EdXjQQT2NA1GkoVjapVixZ_YvREDCU6bEJhWrnXT2PLVE-5DN2uVdfwtI6uesTe4cn-x1MfyRD4g2JxPpaA11etDkjAqQeKckiQ5P2ubN4Kvb3HQvJLX_C-FG4B4PmbVTqXfljHgUFAHWZTJP742mGoI3tIZw7_yEgBaksS8Nwxihw3p6sPKygPuRSwQwDXfBNfP2oJYIgqhzdcT3Nnlc8-LBX5aIYA_CZdSyiU-D8I-nVHGR7JHKj5qXb2uVBP46KNIiH0Iq8HmgnpP4vjhio51va0v1LCLdtdGbm5rNbzGcZGf-zCKeCvf2L0EV9fqFmkOTbcEoOOXg; access_token=eyJraWQiOiJxSEl0RkdcL0ozKzNIVDd0aVR3dDZkYVVOQ2UwMzE0bXI2VGF3TDNWSEQ0UT0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIxZGZhNTA1ZS1kMzU1LTQ2NDEtOTA5My01ZTFmZDQ5MDgwMWUiLCJldmVudF9pZCI6IjU4MzhjOWYwLTBkMGUtNDdkZC1iY2M3LTg4N2E0MTU1Mjc1MyIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiYXdzLmNvZ25pdG8uc2lnbmluLnVzZXIuYWRtaW4iLCJhdXRoX3RpbWUiOjE2MDc1MjgxOTUsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbVwvZXUtd2VzdC0xXzE0TVZydmxoVCIsImV4cCI6MTYwNzUzMTc5NSwiaWF0IjoxNjA3NTI4MTk1LCJqdGkiOiI0YmVjMTkwOC1kOGU1LTRiNWItYTk1OC1kZGUzZTNhZTRiNDYiLCJjbGllbnRfaWQiOiI1MTlnZjJyNDZwOGgxYnFpbXYybWRtYnNzZiIsInVzZXJuYW1lIjoiZTkxNjE3M2UtNDJkYi00MTFjLTgwZGUtNmY0MjUxMWQyNDNkIn0.OhSMdc54Ywgac_Qr5aVkuN_CkWQIa1TlFRyBqRedC_dAfk7kPLoUqUFPbvfvyczTsxu6wSkc4RRs5lR9HFSgaCrHNGyThd3GvFjuEAd8Ak2tqnNe9A7Ux77MYP0JAkbDUx94BJv3-wAwrRsIQCbSzbJa4VpObktl0ZzVTB34FUJ_4zuwquDGL0UN-Qq-Xhp0JdjJ3uu3okAyi3I52_cebuyuuFZmn1OpiRZyBc4BNT6zOhDfF5-1VuKLRtjFkWgsc7ENxVfmjnr1l5bATZX4XCD2wKTcjhs-IAldeS1JzUaZw5hsq1oR9rFGQ5u2BVvbY_TTlKkapGsOvBR1f1xM0g; refresh_token=eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAifQ.E_LEgltS3YUkrU1Z9xXeKbdAv0PDSgiRYms_ClyrDWkvcT8lBlm7fW77kG9BiJYtGNFUYLbA4psZdTFJI0W9w_QmQtIHLjYc4q3HjLgy8EqC9nHTaiCnpy5DLJy3FAcHxw-d8YGqaMEoV-5iqWypNBzqR-itGuzD57-q_EihRJFbyGstdyPHsFBOjww-LAPjmXmDWufHv8_Ha3nEgeWA3YQkmUy_9CEU14_RwUJeMrPeCRk9tylgRr_h1n_KOwXytjNw6GBs_I49YJotngEZCICNK6FL_czkOYkF4ylW8CHDBVybtxjzJcl5Bohl-RPBv_exl14fudwov1Fj_CXqZw.qiAGicVAAugBv0b4.LFIdBbSc0A6Hw6BjW_eBvgFCb6Nn0NeRVz4khxudzH_z490lPNYN_PDqQc_Sfj6kw8ESvb8tCjaDmQFnUZRRpfrX2DuTbgM_IpCJUVzoIP-2AZrXGi78jT-t_6zRwcv1Z51C2u6gaC7LGm4i2nuYYOr07ndE7Gjs1UHKN-A0E8I0ATx_GhSHT6r8Ld7US2CR4TSnF_X0_4L3jAcXS98Ru8vG5RNNs7tRS3EGwM31lWIqBVcI66R1q01KGLW291IqCdP8DeGRI10az9HnmXm4XxDZt10uT5GRgLqxLTu8pbgzCyL8yjSy6o7_j1h6lgWccb4zBwCRDnBr3ICHRvM7EjoMPkR91kBQmziw-XQTKcpWfvtNv8Dfwilq0lpbuezaVE7-fx9I54d66LrAW-QhyfMYAXaIEeKzxfrVB8pUXOzEAMfOuO0D-jfEKkttIMEonHZLNzl24Z1-gZo6XtcbviIaKw5nVlJyi_AUxzXUOURSE9QmzgdD6dGaU5J6ZBeHDdIcenGTceixArhBhvF9PV7WoWMlGv63G6gbtuV89NZ5cjr1GgjW-pmnfGuxv6Po0PxQAzY8AdDoK6pfAkn8L4gpAvMNbvC0PPVXV1OrfnaN7QsJ8yA-QEwdrENSml81JVdZZVMaHBMkrnkqHyH32eqES1PIORFgk-y7Ypi6WbScE9C-YPl1cOa8M3tnt2SaOod9x3_Q4qfi89_jb4MfBmIPZNltBVS3pZex2E5q53mL4NxAzes3XeIAog2jiSq-JsuAQt7f4p3-mFO4KpE7_18TAmZwbgzgHtQ0r10o2iqQQpYQzf3PIH5sOMi04aRSG4Q3LEzg_1nwLTZaW6O9aDklmuEgnKDEKyQW1BlW-LN5ICXEZovkMaOoU_luDomT7jYLRUY6v4CcmmnWDR2m7D84gA-3THEYJuR-aVxlnFsN5K6GGUEyETT17qK4ONqWMPR5w_GYenfV6N6tT_1rleHu1tjt5kAkCwU1o5oXhP4Q3hArJta7Par0xzM_I-whHI5ikrMHI83hrMu8nLSZ65h28gSc21ld94guaU-zCKIjvCo6gTqoGwbPd7yxopXSYYTqZ_-WPwDytITqf_Swj6GBG0yIiAu7-Zt10wmKgzfWARJECy4befAOiQMxReIuPaPC6kirEwyxMYXxq39WRqOfr-q_JjCrjyHugxPNmZaivFggfy9bqapScJK96-XHCTTyya78X-xmdu6VQjJiyE95G013aoau-X2-nkAswsOQhKDW2DR4EbRh2kO0yO8RRt8YU8a1OoED1W_mIuU2JvRJgUwGQnDiTFaL54w2GRrUSNVrL89s7MWnxg.vjAOfmEXwwfyOgFIW2Ti5Q; is_logged=1; newrelic_cdn_name=CF",
'accept-encoding': "gzip, deflate",
'content-length': "677",
'Connection': "keep-alive",
'cache-control': "no-cache"
}
rresponse = requests.request("POST", url,data=payload, headers=headers)
req=rresponse.text
print(req)
json_data = json.loads(rresponse.text)
token=(json_data.get('access_token'))
### End of first request
for i in r:
titlu=(i.get('name'))
cat_id="69"
city_id="6613"
lat="44.9578"
longi="25.5688"
tip="interior"
body_type="hatchback"
region_id="6"
delivery="1"
make="honda"
manufacturer="Nespecificat"
manufacturer_code="1234"
pret=(i.get('price'))
vat="1"
advertiser_type="business"
phone="0744000000"
color="blue"
engine_power="320"
engine_capacity="1996"
gearbox="manual"
transmission="front-wheel"
co2_emissions="177"
person = "Multicom Auto"
images = (i.get('images'))
preview = images[0]
imagine= (preview.get('src'))
imagine2 = str(imagine)
print(imagine2)
payload4 = "{\n \"1\": \""+imagine2+"\"\n}"
headers4 = {
'Authorization': "Bearer " + token ,
'Accept': "application/json",
'Version': "2",
'Content-Type': "application/json",
'User-Agent': "PostmanRuntime/7.15.0",
'Cache-Control': "no-cache",
'Postman-Token': "6f9f0c71-b854-4d7d-a7dd-a281b445eaef,868f6f2c-a87a-4e11-95e9-365972bb72ed",
'Host': "ssl.autovit.ro",
'cookie': "PHPSESSID=aq78pib4a5ei411mtvk7ts9jkq; user_id=3235571; is_logged=1; newrelic_cdn_name=CF",
'accept-encoding': "gzip, deflate",
'content-length': "99",
'Connection': "keep-alive",
'cache-control': "no-cache"
}
response4 = requests.request("POST", url4, data=payload4, headers=headers4)
descriere=(i.get('description'))
descriere2=descriere.replace("\n", "")
descriere3=descriere2.replace('<div>', '')
descriere5=descriere3.replace('</div>', '')
print(titlu + " \n " +descriere5)
json_id= response4.json()
image_collection_id= (json_id.get('id'))
print(response4)
### Start of Api POST Request
headers2 = {
'Authorization': "Bearer " + token,
'Accept': "application/json",
'Version': "2",
'Content-Type': "application/json",
'User-Agent': "PostmanRuntime/7.15.0",
'Cache-Control': "no-cache",
'Postman-Token': "04927f0a-cf06-4cb5-b83e-4eed29d1efec,829a1557-066a-4115-b134-66da62274203",
'Host': "ssl.autovit.ro",
'cookie': "PHPSESSID=iqfgqqgnbb15pk6ovt8bqvemm5; user_id=3235571; is_logged=1; id_token=eyJraWQiOiJDY3ZTY1ljRE5MS294RzRFMktPSTltcU5zczJxcmN4dENWaG5Xd2JYNlEwPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIxZGZhNTA1ZS1kMzU1LTQ2NDEtOTA5My01ZTFmZDQ5MDgwMWUiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tXC9ldS13ZXN0LTFfMTRNVnJ2bGhUIiwicGhvbmVfbnVtYmVyX3ZlcmlmaWVkIjpmYWxzZSwiY29nbml0bzp1c2VybmFtZSI6ImU5MTYxNzNlLTQyZGItNDExYy04MGRlLTZmNDI1MTFkMjQzZCIsImxvY2FsZSI6InJvIiwiYXVkIjoiNTE5Z2YycjQ2cDhoMWJxaW12Mm1kbWJzc2YiLCJldmVudF9pZCI6IjNkMjNhODViLTFmZDQtNGE5YS05NGJiLWQ4MjMyOWNhNGQzYiIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNjA3OTU1MDg5LCJleHAiOjE2MDc5NTg2ODksImlhdCI6MTYwNzk1NTA4OSwiZW1haWwiOiJtdWx0aWNvbWF1dG9AeWFob28uY29tIn0.HsKTCGiZ9rj9Tc9Bta8Eg-28XMnTOx5kzcuuFlV7DSPVAw9JH3zfSGK657RNE2SLMEt7CfYZwwUFAbgVXpEGci18kN1ekQj3CvzkPNigI_q8Lu4iQrt-cBJ72ZzZS5E7tYHZnsasB0mO4ZIZckILU0LjFwFVHTrt0M7ym9yCCYTCKdjZPJaIfbmIuv__RE1GDtWH2iazB19HvljOw4N2j8xnqFT0y0ZU-vGKckcTyhw_J7gnBasrzlGPRX60OIrcnJrfb53QHknfxbGqJYJjWSAhcVHWX7CZRse9vPKnjRVhxVL8qCfpf8GhITJARjg7cN_77j0OuXwa2s5bWlpEhg; access_token=eyJraWQiOiJxSEl0RkdcL0ozKzNIVDd0aVR3dDZkYVVOQ2UwMzE0bXI2VGF3TDNWSEQ0UT0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIxZGZhNTA1ZS1kMzU1LTQ2NDEtOTA5My01ZTFmZDQ5MDgwMWUiLCJldmVudF9pZCI6IjNkMjNhODViLTFmZDQtNGE5YS05NGJiLWQ4MjMyOWNhNGQzYiIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiYXdzLmNvZ25pdG8uc2lnbmluLnVzZXIuYWRtaW4iLCJhdXRoX3RpbWUiOjE2MDc5NTUwODksImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbVwvZXUtd2VzdC0xXzE0TVZydmxoVCIsImV4cCI6MTYwNzk1ODY4OSwiaWF0IjoxNjA3OTU1MDg5LCJqdGkiOiJjM2JlZjNhYi1kZDA2LTQzOTgtYjJjOC1hNGY0YmE5YjU1YTgiLCJjbGllbnRfaWQiOiI1MTlnZjJyNDZwOGgxYnFpbXYybWRtYnNzZiIsInVzZXJuYW1lIjoiZTkxNjE3M2UtNDJkYi00MTFjLTgwZGUtNmY0MjUxMWQyNDNkIn0.SrB8jc9gK-jZ4RL7EQEZmSYK2dmcvn7tEpHv6fz9UHoaj7421_ZaMyo1zJMwMYA0SOlYSOefesKpYINRUdKwinzVlSNtbbOKJc9CMZyjoIEIvCm0F-bdwK-jPGFbcFH7y2mQ3yzTNI0asJc7NO2QaXaO7pPM46L9IV10lBZYZ6sNDb6f6OjpPR9BipDpaLVRxH5h0QKgDHL1yY3NlpAqohvpD_6CKROMnLtpMO9GZ00fN_MxOM7BXb-H4M2TOxdc9HcLoCju80fMQ0HXWuOQMRUU4h5Of0j3B3qmCkubMza8k_uF7c2YAtbSb63I3INgkvQX5HaVMODA1E4ZkqWdpw; refresh_token=eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAifQ.a5LgkokKK_WUd3Yjk3_tZX-xy-oEhKLLiuXQbcEfa9GiMfzJB2yKvvnNwduH6VyA8OvPRJKByjDFWhu37Bli8Lf1RWAz1yd5s9m3Kxg2rDb6ECaQT96jy3y_jf_qTCF7S7t0NDxg6G8b5Gdk6Kwm5C20tnntr5-IVVxctsH0hEIVrKjVl3d84oA_sS67MoBPlgaF-NBZUOkL-kwzz3COSVSGziE2Hb9clh56ZxuK8uUcKD2xA0dD8i6wXujtwMzAOsdSuAZUZ3qkOG4yonNa9Sn9XV-L8FHIISLk0_KK9w2wGl9wXfoDbad7TnmfmmV2ujinK3HB3vIQdE7SQ7JXHw.eZS3I4UiaPbcOdbQ.fW8HX2tizpYWFE32nZhvZ1NufOTqhUQLfkx3Coh4tNk9TAECvYs8gEcx4GDBWTwohV7Kb1bLSPhbqQ7r1GdptWUt_Cru33hFX-BwTdh7BoBw18gKQjU5bfv0oYJ_izc-su63aNBz-yzKFxk06Gmj8qIjj9SrGGfLFlLgwTRP4-VtDn3pVxpkQ_jvKZfD8Mgj7_w0XkH3PZ-R9JuhWLSfIpzVicWL_oolx4NQEtNYGAHvc-nrb4Wcbp9v5uPfv0kS2t87Ofseus5_1ySMo-6O1whE84q95UzBvk36mkfWguaKFOOLmIGa4aFhJwgrBENleJuRxv5PCLt_gkGMoZr8y8V9kZEkdtYd2JHcrFwlkU20NPQc0GXNwWoFvAmb30C8ub0NgvV2KyxXENo0kvyxfXd4hwFeB1MgHJrHrvgh4axz8lOBul1depe2n6jJ5ogDSkxIKvX13O5Obqr6XtyV9DxIkXJoh3fXlMPYOjuu922PHf1yind8OPfA-dkt5M_T3ZF_EFHJ4znJmkpxi5-IO0zN9CVZSIEsNah56rFthcYO-GPbeF_eXT1V2iwnmLTuOz50_0qInOGcdL78SMomzYL4kJ9I7kWZQicbuTiNZu58fWSrcMLKGlqU3Oc0fm2RjBFyEy4XSgpcXr6k40MPqqxg7VIIgpvsKGIANiKrWtMlai_K6ZSR5ZDJvo3P74rE6F56tKDAq72bCXeSnBylrxTniPRXwk3gi_lHfzUgvPMnodgkI9NVMch0DZ_Pa4NbNLBfdh7aeR8sx7Vzfoz5wFVg9wuIwzSUp8A1JSha_KzcECY8GbEuaHfF1j6mF6R_Pue45BWlYyfBIz0J5zEPo9EXMqd4cWbrci7GhvEdeY6GGQTUUatwGNDVgz99hfmyf23AOAFu0w4IOgV7TlZvpt79vwBfJ0BDJwG-9ep1gM1tq7qLX_naTR6aWBN9d4KlILN52C9W2mWaMhGVTNST6I147L69lcITdjReuZPEuldE6mTl-W5TiTN1HHNbEBIRLRdd1XzLMlPbd1S6h8Ilwc6jYrt0GnWpnmMDJYOynoIv0A0eb-Loo79tVwjvfaUPuQDR7yBGT3Bwzec7RbVC6FQSI6BI1TlM0OeGW6eQ-gipjBV2CP9UF4HbcDWz2ZNOjNmlNwkqu63f4oxm1StyJRRHiPe0BPnVgBTtWrdli1dpM-d5YeTALNxowayUfPAiXb4Ih6MpGgnHYei2Tu5otVZz-jEEGeao0bG9Du7LHOtwd2C5OAw1hRS6NCC4QExETUjRWVk0vawLLDVTMVouRn6fXyKKBaM2kf1oc2td1J692mbyQCtmvmwNSw.65LsJCAJgfXFE6loW_JnsQ; newrelic_cdn_name=CF",
'accept-encoding': "gzip, deflate",
'content-length': "1062",
'Connection': "keep-alive",
'cache-control': "no-cache"
}
payload2 = "{\r\n \"title\":\" "+titlu+" \",\r\n \"category_id\":\" "+cat_id+" \",\r\n \"region_id\": \" "+region_id+" \",\r\n \"city_id\":\""+city_id+"\",\r\n \"coordinates\":{\r\n \"latitude\":\""+lat+"\",\r\n \"longitude\":\""+longi+"\"\r\n },\r\n \"params\":{\r\n \"type\":\""+tip+"\",\r\n \"delivery\":\""+delivery+"\",\r\n \"title\":\""+titlu+"\",\r\n \"make\":\""+make+"\",\r\n \"manufacturer\":\""+manufacturer+"\",\r\n \"manufacturer_code\":\""+manufacturer_code+"\",\r\n \"body_type\":\""+body_type+"\",\r\n \"color\":\""+color+"\",\r\n \"price\":{\r\n \"0\":\"price\",\r\n \"1\":"+pret+",\r\n \"currency\":\"RON\",\r\n \"gross_net\":\"gross\",\r\n },\r\n \"vat\":"+vat+",\r\n \"engine_power\":\""+engine_power+"\",\r\n \"engine_capacity\":\""+engine_capacity+"\",\r\n \"gearbox\":\""+gearbox+"\",\r\n \"transmission\":\""+transmission+"\",\r\n \"co2_emissions\":\""+co2_emissions+"\"\r\n },\r\n \"description\":\""+descriere5+"\",\r\n \"advertiser_type\":\""+advertiser_type+"\",\r\n \"image_collection_id\":\""+image_collection_id+"\",\r\n \"contact\":{\r\n \"person\":\""+person+"\",\r\n \"phone_numbers\":[\r\n \""+phone+"\"\r\n ]\r\n }\r\n}"
url9 = "https://www.autovit.ro/api/open/account/adverts"
headers9 = {
'Authorization': "Bearer" +" "+ token,
'Content-Type': "application/json",
}
response9 = requests.request("GET", url9, headers=headers9)
response9_json=response9.json()
response9_txt=str(response9_json)
if titlu in response9_txt:
print("Anuntul a fost deja adaugat!")
else:
payload2_json=json.dumps(payload2)
response2 = requests.request("POST", url2 ,json=payload2, headers=headers2)
print(response2.text)
This script is just doing a bunch of requests, then creates ads on that website through api. However it has just stopped working suddenly, anyone has any idea why it gives me "BadRequestException","message":"Empty payload". Been trying to fix it all night long but it just wont work. I am thinking maybe its the guys that have the websites changed the api a bit or its an error somewhere? I tried sending payload as json, as utf8 but its not working anymore, no matter how hard i try
I am tring to get the EPG data at the web page https://www.meo.pt/tv/canais-programacao/guia-tv using Python requests. I use this module a lot, but mainly the GET method. This request however is using POST. Everytime you scroll down the page, a request is sent to the API below using these params to load additional program data to the page:
import requests
#post request
url = 'https://www.meo.pt/_layouts/15/Ptsi.Isites.GridTv/GridTvMng.asmx/getProgramsFromChannels'
headers = {
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-GB,en-US;q=0.9,en;q=0.8',
'Connection': 'keep-alive',
'Content-Length': '214',
'Content-type': 'application/json; charset=UTF-8',
'Host': 'www.meo.pt',
'Origin': 'https://www.meo.pt',
'Referer': 'https://www.meo.pt/tv/canais-programacao/guia-tv',
'sec-ch-ua': '"Google Chrome";v="89", "Chromium";v="89", ";Not A Brand";v="99"',
'sec-ch-ua-mobile': '?0',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36',
'X-KL-Ajax-Request': 'Ajax_Request'
}
data = {"service":"channelsguide",
"channels":["LVTV","TOROTV","CAÇAP","CAÇAV","RTPACRS","CLUBB","MCM T","TRACE","24KITC","E!"],
"dateStart":"2021-04-20T23:00:00.000Z",
"dateEnd":"2021-04-21T23:00:00.000Z",
"accountID":""}
r = requests.post(url=url, headers=headers, data=data)
print(r.text)
I have tried this request, both with and without the headers used, as I don't know if they are needed for a POST request. However, both these options don't return what i was expecting, which was a JSON object containing the program data for these channels.
What am I doing wrong?
Consider using json argument instead of data in request function. The json argument parses your body to JSON format while data you are sending a raw dictionary.
data = {"service":"channelsguide",
"channels":["LVTV","TOROTV","CAÇAP","CAÇAV","RTPACRS","CLUBB","MCM T","TRACE","24KITC","E!"],
"dateStart":"2021-04-20T23:00:00.000Z",
"dateEnd":"2021-04-21T23:00:00.000Z",
"accountID":""}
r = requests.post(url=url, headers=headers, json=data)
If you want to keep using data argument you should parse data dictionary to JSON to send the correct body format.
You can use this example how to POST json data to the API Url:
import json
import requests
url = "https://www.meo.pt/_layouts/15/Ptsi.Isites.GridTv/GridTvMng.asmx/getProgramsFromChannels"
payload = {
"accountID": "",
"channels": [
"SCPHD",
"EURHD",
"EURS2HD",
"DISNY",
"CART",
"BIGGS",
"SICK",
"NICKELO",
"DISNYJ",
"PANDA",
],
"dateEnd": "2021-04-21T22:00:00.000Z",
"dateStart": "2021-04-20T22:00:00.000Z",
"service": "channelsguide",
}
data = requests.post(url, json=payload).json()
# pretty print the data:
print(json.dumps(data, indent=4))
Prints:
{
"d": {
"__type": "Ptsi.Isites.GridTv.CanaisService.GridTV",
"ExtensionData": {},
"services": [],
"channels": [
{
"__type": "Ptsi.Isites.GridTv.CanaisService.Channels",
"ExtensionData": {},
"id": 36,
"name": "SPORTING TV HD",
"sigla": "SCPHD",
"friendlyUrlName": "Sporting_TV_HD",
"url": "https://meogo.meo.pt/direto?canalUrl=Sporting_TV_HD",
"meogo": true,
"logo": "https://www.meo.pt/PublishingImages/canais/sporting-tv-hd.png",
"isAdult": false,
"categories": [
{
"ExtensionData": {},
"id": 2,
"name": "Desporto"
}
],
...
If you want to keep using data argument you should parse data
dictionary to JSON to send the correct body format.
And you should set headers as:
headers = {
'Content-type': 'application/json'
}
complete code is:
import json
import requests
url = "https://www.meo.pt/_layouts/15/Ptsi.Isites.GridTv/GridTvMng.asmx/getProgramsFromChannels"
headers = {
'Content-type': 'application/json'
}
payload = {
"accountID": "",
"channels": [
"SCPHD",
"EURHD",
"EURS2HD",
"DISNY",
"CART",
"BIGGS",
"SICK",
"NICKELO",
"DISNYJ",
"PANDA",
],
"dateEnd": "2021-04-21T22:00:00.000Z",
"dateStart": "2021-04-20T22:00:00.000Z",
"service": "channelsguide",
}
resp = requests.post(url,headers=headers,data=json.dumps(payload))
print(resp.text)
I'm trying to populate json response issuing a post http requests with appropriate parameters from a webpage. When I run the script, I see that the script gets stuck and doesn't bring any result. It doesn't throw any error either. This is the site link. I chose three options from the three dropdowns from this form in that site before hitting Get times & tickets button.
I've tried with:
import requests
from bs4 import BeautifulSoup
url = 'https://www.thetrainline.com/'
link = 'https://www.thetrainline.com/api/journey-search/'
payload = {"passengers":[{"dateOfBirth":"1991-01-31"}],"isEurope":False,"cards":[],"transitDefinitions":[{"direction":"outward","origin":"1f06fc66ccd7ea92ae4b0a550e4ddfd1","destination":"7c25e933fd14386745a7f49423969308","journeyDate":{"type":"departAfter","time":"2021-02-11T22:45:00"}}],"type":"single","maximumJourneys":4,"includeRealtime":True,"applyFareDiscounts":True}
with requests.Session() as s:
s.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
s.headers['content-type'] = 'application/json'
s.headers['accept'] = 'application/json'
r = s.post(link,json=payload)
print(r.status_code)
print(r.json())
How can I get json response issuing post requests with parameters from that site?
You are missing the required headers: x-version and referer. The referer header is referring to the search form and you can build it. Before journey-search you have to post an availability request.
import requests
from requests.models import PreparedRequest
headers = {
'authority': 'www.thetrainline.com',
'pragma': 'no-cache',
'cache-control': 'no-cache',
'x-version': '2.0.18186',
'dnt': '1',
'accept-language': 'en-GB',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/88.0.4324.96 Safari/537.36',
'content-type': 'application/json',
'accept': 'application/json',
'origin': 'https://www.thetrainline.com',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
}
with requests.Session() as s:
origin = "6e2242b3f38bbbd8d8124e1d84d319e1"
destination = "15bcf02bc44ea754837c8cf14569f608"
localDateTime = "2021-02-03T19:30:00"
dateOfBirth = "1991-02-03"
passenger_type = "single"
req = PreparedRequest()
url = "http://www.neo4j.com"
params = {
"origin": origin,
"destination": destination,
"outwardDate": localDateTime,
"outwardDateType": "departAfter",
"journeySearchType": passenger_type,
"passengers[]": dateOfBirth
}
req.prepare_url("https://www.thetrainline.com/book/results", params)
headers.update({"referer": req.url})
s.headers = headers
payload_availability = {
"origin": origin,
"destination": destination,
"outwardDefinition": {
"localDateTime": localDateTime,
"searchMethod": "DEPARTAFTER"
},
"passengerBirthDates": [{
"id": "PASSENGER-0",
"dateOfBirth": dateOfBirth
}],
"maximumNumberOfJourneys": 4,
"discountCards": []
}
r = s.post('https://www.thetrainline.com/api/coaches/availability', json=payload_availability)
r.raise_for_status()
payload_search = {
"passengers": [{"dateOfBirth": "1991-02-03"}],
"isEurope": False,
"cards": [],
"transitDefinitions": [{
"direction": "outward",
"origin": origin,
"destination": destination,
"journeyDate": {
"type": "departAfter",
"time": localDateTime}
}],
"type": passenger_type,
"maximumJourneys": 4,
"includeRealtime": True,
"applyFareDiscounts": True
}
r = s.post('https://www.thetrainline.com/api/journey-search/', json=payload_search)
r.raise_for_status()
print(r.json())
As Sers's reply, headers are missing.
When scrawling websites, you have to keep in mind anti-scrawling mechanism. The website will block your requests by taking into consideration your IP address, request headers, cookies, and various other factors.
I would like to format my request data field.
I tried many methods but I couldn't
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Language': 'tr-TR,tr;q=0.8,en-US;q=0.5,en;q=0.3',
'Content-Type': 'application/json; charset=utf-8',
'Origin': 'https://www.example.com',
'Connection': 'keep-alive',
'Referer': 'https://www.example.com/',
}
data = '{ "loginId": "mailadress#hotmail.com", "password": "password123"}'
response = s.post('https://auth-api.example.com/login', headers=headers, data=data)
I tried:
data = '{ "loginId": "{}", "password": "{}"}'.format(liste[0],liste[1])
Also:
data = "'{ "loginId": "{}", "password": "{}"}'".format(liste[0],liste[1])
quote = ' " '
data = quote + '{ "loginId": "{}", "password": "{}"}' + quote.format(liste[0],liste[1])
So how can I format data field?
The documentation of the post function specifies that data must be a dictionnary, list of tuples, bytes, or file-like object.
So, try:
data = {"loginId": liste[0], "password": list[1]}
I would use the requests module like this:
import requests
try:
data = requests.post('https://auth-api.example.com/login', auth=("mailadress#hotmail.com", "password123"), headers=headers, verify=False)
except requests.exceptions.RequestException as e:
print e
print ("unable to run request on %s " % (url) )
continue