How do I manually add more cookies to a session which already has cookies set in mechanize?

2024/9/25 15:28:09

I have a python script which scrapes a page and receives a cookie. I want to append another cookie to the existing cookies that are being send to the server. So that on the next request I have the cookies from the original page plus ones I set manually.

Anyway of doing this? I tried addheaders in mechanize but it was ignored.

Answer

Use the set_cookie method:

>>> import mechanize
>>> br=mechanize.Browser()>>> br.set_cookie?Definition: br.set_cookie(self, cookie_string)
Docstring:Request to set a cookie.Note that it is NOT necessary to call this method under ordinarycircumstances: cookie handling is normally entirely automatic.  Theintended use case is rather to simulate the setting of a cookie byclient script in a web page (e.g. JavaScript).  In that case, use ofthis method is necessary because mechanize currently does not supportJavaScript, VBScript, etc.The cookie is added in the same way as if it had arrived with thecurrent response, as a result of the current request.  This means that,for example, if it is not appropriate to set the cookie based on thecurrent request, no cookie will be set.The cookie will be returned automatically with subsequent responsesmade by the Browser instance whenever that's appropriate.cookie_string should be a valid value of the Set-Cookie header.For example:browser.set_cookie("sid=abcdef; expires=Wednesday, 09-Nov-06 23:12:40 GMT")Currently, this method does not allow for adding RFC 2986 cookies.This limitation will be lifted if anybody requests it.
https://en.xdnf.cn/q/71562.html

Related Q&A

python generators time complexity confusion

I have been reading about keyword yield and generators in python and I want to know if I have understood it right it terms of time complexity.Here is my generator function to get factors:def calc_facto…

Python: Find Amount of Handwriting in Video

Do you know of an algorithm that can see that there is handwriting on an image? I am not interested in knowing what the handwriting says, but only that there is one present? I have a video of someone…

Include nonce and block count in PyCrypto AES MODE_CTR

Some background information, you can skip this part for the actual questionthis is my third question about this topic here at stackoverflow. To be complete, these are the other questions AES with crypt…

Why is pandas.series.map so shockingly slow?

Some days I just hate using middleware. Take this for example: Id like to have a lookup table that maps values from a set of inputs (domain) values, to outputs (range) values. The mapping is unique. A …

Viewset create custom assign value in Django Rest Framework

Would like to set a CustomUsers username by using the input email, but where to do the custom assigning, in view? At the same time it receiving a file as well.Models.pyclass CustomUser(AbstractUser):a…

Remove a relation many-to-many (association object) on Sqlalchemy

Im stuck with a SqlAlchemy problem.I just want to delete an relation. This relation is made by an association object.modelsclass User(db.Model, UserMixin):id = db.Column(db.Integer, pr…

Spark Dataframes: Skewed Partition after Join

Ive two dataframes, df1 with 22 million records and df2 with 2 million records. Im doing the right join on email_address as a key. test_join = df2.join(df1, "email_address", how = right).cach…

Caught TypeError while rendering: __init__() got an unexpected keyword argument use_decimal

While running the program i am getting the following error messageCaught TypeError while rendering: __init__() got an unexpected keyword argument use_decimalHere is my code i am using jquery 1.6.4 d…

How to get chunks of elements from a queue?

I have a queue from which I need to get chunks of 10 entries and put them in a list, which is then processed further. The code below works (the "processed further" is, in the example, just pr…

Receiving commandline input while listening for connections in Python

I am trying to write a program that has clients connect to it while the server is still able to send commands to all of the clients. I am using the "Twisted" solution. How can I go about this…