Error 401 sending recaptcha token with requests - json

I tried to make a cart for this site: https://www.off---white.com/en/IT
When I tried to send values for the params of the cart, one of this params is a token of recaptcha. I tried manually to get the token using this project 'https://github.com/Cosmo3904/Recaptcha-Harvester-V2'
When I tried to make the request I pass all params:
token = 'recaptcha_token' #(I get it manually and expires every 110s)
payload = {"variant_id": "111380", "quantity": "1", 'g-recaptcha-response': token}
s = requests.Session()
resp2 = s.post("https://www.off---white.com/en/IT/orders/populate.json",headers=headers,data=payload)
print('STATUS CODE: ' + str(resp2.status_code))
unfortunately the response is every time 401, that means unauthorised. How can I solve this?
(To the session I pass headers and cookies so the page is right configured, I checked before trying login and it works)

import cfscrape
s = requests.Session()
scraper = cfscrape.create_scraper(s)
scraper.get('https://www.off---white.com/en/IT', headers=headers)
url = 'https://www.off---white.com/en/IT/orders/populate.json'
r = scraper.post(url, data={'variant_id' : 'variant', 'quantity' : 1, 'g-recaptcha-response': token}, headers=headers)
Try with cfscrape.

Related

Geodis API implementation

I am developing my first API in lua to manage geodis transport in my company.
I finished the development and I have a 400 error my json request is correct is the header or a bad url can return me a 400 error?I tested on their site the request works correctly.
you will find below the calculation of the hash and the header and the url.
````url_webservice = "https://espace-client-rct.geodis.com/services/"`
````endpoint = url_webservice..Service
````t = os.date('*t')
````timestamp =os.time(t)
````milliseconde = (timestamp * 1000)
````message = cle..';'..id..';'..milliseconde..';'..'fr'..';'..url_Service..';'..jsonGEO
````Trace("log", "message:" ..message)
````local Hash = cryptographicHash(toLocal8Bit(message), "sha256")
````Trace("log", "hash:" ..Hash)
````local token = id..';'..milliseconde..';'..'fr'..';'..url_Service..';'..Hash
````Trace("log", "token:" ..token)
````local headers = {
````"Accept: */*",
````"Content-Type: application/json; charset=utf-8",
````"X-GEODIS-Service:" .. token
````}
````local request = ws:createHttpPostRequest(url, headers, jsonGEO)`
I've tried everything to make it work and I can't find the problem

Zoho Deluge - JSON POST

I am trying to use a POST command in deluge to recall a document. When I make the call I get back a no file found (I have verified the id is correct).
The format should come out like this: POST https://sign.zoho.com/api/v1/requests/[Request ID]/recall
https://www.zoho.com/sign/api/#recall-document
What am I doing incorrect?
//Get Zoho Request ID
resp = Sign_ID.toLong();
//add recall command
data = resp + "/recall";
// JSON
response = invokeUrl
[
url: "https://sign.zoho.com/api/v1/requests/"
type: POST
parameters: data.toString()
];
info "Attempting to recall waiver..." + response;
Verified Sign_ID is returning correct value
Verified correct API call
Verified error code
Other than what #ZohoCoder have mentioned.
From the documentation, it seems what you have done is almost right.
// Get Zoho Request ID
resp = Sign_ID.toLong();
// use a variable for the URL of the request
urlRequest = "https://sign.zoho.com/api/v1/requests/" + resp + "/recall";
// JSON
response = invokeUrl
[
url: urlRequest
type: POST
];
info "Attempting to recall waiver..." + response;

M Language - How to get JSON in HTTP Request Body? (Vimeo API Unsupported Grant Type Error)

I am attempting to create my first PowerBI Custom Connecter to connect to the Vimeo API. I am stuck on the final step of the authorization flow - getting back an access token. When trying out the Connecter in PowerBI, it seems to authenticate properly when I hit the access token endpoint, but I get back a warning "[unsupported_grant_type] Unsupported grant type"
It appears I am not sending the grant_type properly in the request. Here are Vimeo's requirements of what is sent along in the header and body of the request:
Header
Set value to
Authorization
basic base64_encode(x:y), where x is the client identifier and y is the client secret
Content-Type
application/json
Accept
application/vnd.vimeo.*+json;version=3.4
"In the request body, send the grant_type field with the value authorization_code. You must also set code to the authorization code string that you just received and redirect_uri to the redirect URI that you specified previously — don't use a different redirect URI."
{
"grant_type": "authorization_code",
"code": "{code}",
"redirect_uri": "{redirect_uri}"
}
Here is a snippet of code from the Customer Connector I am building. It is within this TokenMethod function that I am trying to fulfill the requirements of the table above. I am getting the sense I am not correctly placing the JSON in the body of the request, but I am stuck on what to try next:
TokenMethod = (grantType, tokenField, code) =>
let
queryString = [
grant_type = "authorization_code",
redirect_uri = redirect_uri,
client_id = client_id,
client_secret = client_secret
],
queryWithCode = Record.AddField(queryString, tokenField, code),
authKey = "Basic " & Binary.ToText(Text.ToBinary("client_id:client_secret"),BinaryEncoding.Base64),
tokenResponse = Web.Contents(token_uri, [
Content = Text.ToBinary(Uri.BuildQueryString(queryWithCode)),
Headers = [
#"Authorization" = authKey,
#"Content-type" = "application/json",
#"Accept" = "application/vnd.vimeo.*+json;version=3.4"
],
ManualStatusHandling = {400}
]),
body = Json.Document(tokenResponse),
result = if (Record.HasFields(body, {"error", "error_description"})) then
error Error.Record(body[error], body[error_description], body)
else
body
in
result;
I'm wondering if someone could please point out where I might be going astray in the code and why I am receiving the [unsupported_grant_type] error.
Many thanks for your time!
I changed Content-Type to "application/x-www-form-urlencoded" and it worked!

getting 400 error when trying to update Webex user through API

I'm trying to update a value received from API in JSON and send it back.
I updated the value as the following code but when I try to send it back "PUT" I get error 400 Bad Request
the API can be found here: Webex Update a Person API
could someone help me figure what am I doing wrong?
thanks a lot
def get_userID(user_id):
session = HTMLSession()
header = {
"Authorization": "Bearer %s" % token,
"Content-Type": "application/json",
}
session.get(
f"https://webexapis.com/v1/people/{user_id}",
headers=header,
verify=True,
)
user_details = webex_user_details.json()
user_details["emails"][0] = "newemail123#example.com"
webex_user_details = session.put(
f"https://webexapis.com/v1/people/{user_id}",
headers=header,
data=user_details,
verify=True,
)
print(webex_user_details)
I figured it out that I need to dump the new data as JSON after updating
user_details = json.dumps(user_details)

chrome.webRequest.onBeforeSendHeaders, uses HTTP Options method instead of GET and POST from the redirected method

//PUT HEADERS IS REDIRECTED REQUEST
chrome.webRequest.onBeforeSendHeaders.addListener(
info =>{
info.method = "GET"
//alert('onBeforeSendHeaders redirect ' +info.method);
let key = info.url.replace(replace, 'key-');
let currentHeaders = info.requestHeaders;
let requestHeaders = map.get(key)
requestHeaders.push(...currentHeaders);
requestHeaders.push({'name':'Access-Control-Allow-Origin', 'value':'*'})
requestHeaders.push({'name':'ISISessionid', 'value':'null'})
return {requestHeaders}
},
{urls : [`${replace}/*`]},
['blocking','requestHeaders','extraHeaders'])
In this I am trying to insert some extra headers in a redirected GET request. The headers are added successfully, but the request method changes to 'OPTIONS' every time.
I tried to force the method, but it also does not works.