我正在尝试使用Go登录网站并存储cookie供以后使用.
您能举例说明发布表单,存储cookie以及使用cookie访问其他页面吗?
我想我可能需要通过研究http://gotour.golang.org/src/pkg/net/http/client.go来让客户存储cookie.
package main
import ("net/http"
"log"
"net/url"
)
func Login(user, password string) string {
postUrl := "http://www.pge.com/eum/login"
// Set up Login
values := make(url.Values)
values.Set("user", user)
values.Set("password", password)
// Submit form
resp, err := http.PostForm(postUrl, values)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
// How do I store cookies?
return "Hello"
}
func ViewBill(url string, cookies) string {
//What do I put here?
}
Run Code Online (Sandbox Code Playgroud) 我知道我可以在cookiejar中遍历cookie,这样我就可以找到一个具有特定名称的cookie - 但是CookieJar对象本身是否有任何我可以通过名称获取某个cookie的方法?
它只是让我不得不编写一个已经存在的辅助方法.
所以我很困惑,因为msdn和其他教程告诉我使用HttpCookies通过Response.Cookies.Add(cookie)添加cookie.但这就是问题所在.Response.Cookies.Add只接受Cookies而不接受HttpCookies,我收到此错误:
无法从'System.Net.CookieContainer'转换为'System.Net.Cookie'
另外,Response.Cookies.Add(cookie)和Request.CookieContainer.Add(cookie)之间有什么区别?
感谢您的帮助,我正在尝试使用C#自学.
// Cookie
Cookie MyCookie = new Cookie();
MyCookie.Name = "sid";
MyCookie.Value = SID;
MyCookie.HttpOnly = true;
MyCookie.Domain = ".domain.com";
// HttpCookie
HttpCookie MyCookie = new HttpCookie("sid");
MyCookie.Value = SID;
MyCookie.HttpOnly = true;
MyCookie.Domain = ".domain.com";
Response.Cookies.Add(MyCookie);
Run Code Online (Sandbox Code Playgroud) 我有一个与机械化一起使用的CookieJar,我想添加一个cookie.我该怎么做呢?make_cookie()和set_cookie()对我来说不够清楚.
br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
Run Code Online (Sandbox Code Playgroud) 我有一个CookieJar的对象我想要腌制.
但是,大家都知道,pickle chokes包含锁定对象的对象.由于一些可怕的原因,CookieJar有一个锁定对象.
from cPickle import dumps
from cookielib import CookieJar
class Person(object):
def __init__(self, name):
self.name = name
self.cookies = CookieJar()
bob = Person("bob")
dumps(bob)
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# cPickle.UnpickleableError: Cannot pickle <type 'thread.lock'> objects
Run Code Online (Sandbox Code Playgroud)
我该如何坚持下去?
我能想到的唯一解决方案是将FileCookieJar.save和FileCookieJar.load用于stringIO对象.但有更好的方法吗?
我正在尝试在curl cookiejar中保存一个cookie.我简化了我的代码,但它不起作用.
<?php
$cookie_file = './cookies.txt';
if (! file_exists($cookie_file) || ! is_writable($cookie_file)){
echo 'Cookie file missing or not writable.';
exit;
}//cookie_file is writable, so this is not the issue
$ch = curl_init (html_entity_decode("http://localhost/kiala_test/setcookie.php"));
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 1);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$output = curl_exec ($ch);
echo $output;
?>
Run Code Online (Sandbox Code Playgroud)
setcookie.php
<?php
$value = 'something from somewhere';
setcookie("TestCookie", $value);
?>
Run Code Online (Sandbox Code Playgroud)
收到标题
HTTP/1.1 200 OK日期:星期四,2013年10月10日12:10:37 GMT服务器:Apache/2.4.4(Win64)PHP/5.4.12 X-Powered-By:PHP/5.4.12 Set-Cookie:TestCookie =某事+来自+某处Content-Length:0 Content-Type:text/html
所以testcookie在标题中,但我的cookiefile保持空白.我做错了什么?我可以尝试使这个例子有效吗?谢谢!
我在Linux Slackware 13.0上使用python 2.6.2运行SUDS 0.4.当我使用此代码调用SOAP方法时:
from suds.client import Client
client = Client(url='file:acctWeb.wsdl',
location='http://10.242.69.4:8088/pfmaccess')
res = client.service.login(login='user',password='passwd')
Run Code Online (Sandbox Code Playgroud)
我收到以下回复:
DEBUG:suds.transport.http:received:
CODE: 200
HEADERS: {'set-cookie': 'OSP_Ref=0000000573800052;Domain=10.242.69.4:8088;Path=/pfmaccess', 'content-length': '26541', 'content-type': 'text/xml; charset=utf-8', 'connection': 'close', 'server': 'Alcatel-Lucent OSP 2.4'}
Run Code Online (Sandbox Code Playgroud)
但
>>> client.options.transport.cookiejar
<cookielib.CookieJar[]>
Run Code Online (Sandbox Code Playgroud)
表明没有可用的cookie.可能是什么原因?我无法使用SOAP API,因为我需要传递响应cookie中发送的凭据.
请帮帮我.
BR
rjan
我遇到了与此处讨论的类似问题:https : //github.com/request/request-promise/issues/183
我正在使用 Request-Promise@4.2.2 和 Tough-Cookie@2.3.4
并得到同样的错误:
类型错误:str.trim 不是函数
我也玩过 npm-dedupe
任何线索,
我的代码如下所示:
let cookie = new tough.Cookie({domain: '.companyName.ninja',
httpOnly: true,
name: '_application_session',
path: '/',
secure: false,
value: 'f044888d39e2d19126716d9f54028700' })
let cookieJar = request.jar()
cookieJar.setCookie(cookie, 'http://application.companyName.ninja/')
options.jar = cookieJar
Run Code Online (Sandbox Code Playgroud) 您可能已经意识到,HTTP服务器通常会发送的不仅仅是session_id cookie; 但是,httplib2使用字典处理cookie,如下所示:
response, content = http.request(url, 'GET', headers=headers)
headers = {'Cookie': response['set-cookie']}
url = 'http://www.example.com/home'
response, content = http.request(url, 'GET', headers=headers)
Run Code Online (Sandbox Code Playgroud)
那么,我该如何设置额外的cookie?如果用字典处理,我不能有双Cookie键:S.
谢谢你的时间.
我想制作一个新的 flutter 应用程序,我正在使用 Facebook 登录 SDK(用于 flutter)。登录成功实现,我能够获取连接用户的访问令牌和 UID。
我的问题是,当用户登录时,我想保留这些 cookie 以将其与 HTTP 请求一起使用。我能够使用本机 android(使用cookiejar和OKHTTP库)进行制作。我想知道 Flutter 是否仍然可能。
如何将 CookieJar 加载到新的 requests.Session 对象?
cj = cookielib.MozillaCookieJar("mycookies.txt")
s = requests.Session()
Run Code Online (Sandbox Code Playgroud)
这就是我创建的,现在会话将存储cookie,但我希望它从文件中获取cookie
(会话应该加载cookieJar)。如何才能实现这一目标?
我搜索了文档,但只能找到代码示例,而且它们从不加载 cookieJar,只是在一个会话期间保存 cookie。
我尝试使用 golang 登录网站的私人区域并提取一些信息,但我似乎不太正确。我设法获取登录页面以获取 csrf 令牌,然后将 csrf 令牌与登录信息一起发布到登录页面,然后我就可以正常登录了。如果我在此时停止,我可以看到我被重定向的页面。但是,从此时开始的任何后续调用都会将我重定向回登录。
代码
package main
import (
"github.com/PuerkitoBio/goquery"
"io"
_ "io/ioutil"
"log"
"net/http"
"net/url"
_ "strings"
"sync"
)
type Jar struct {
sync.Mutex
cookies map[string][]*http.Cookie
}
func NewJar() *Jar {
jar := new(Jar)
jar.cookies = make(map[string][]*http.Cookie)
return jar
}
func (jar *Jar) SetCookies(u *url.URL, cookies []*http.Cookie) {
jar.Lock()
jar.cookies[u.Host] = cookies
jar.Unlock()
}
func (jar *Jar) Cookies(u *url.URL) []*http.Cookie {
return jar.cookies[u.Host]
}
func NewJarClient() *http.Client {
return &http.Client{
Jar: NewJar(),
}
}
func fetch(w …Run Code Online (Sandbox Code Playgroud) 我想用 cookiejar 登录,然后启动的不是登录页面,而是一个只有在经过身份验证后才能看到的页面。我知道机械化可以做到这一点,但除了现在不为我工作之外,我宁愿没有它就这样做。我现在有,
import urllib, urllib2, cookielib, webbrowser
from cookielib import CookieJar
username = 'my_username'
password = 'my_password'
url = 'my_login_page'
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'my_username' : username, 'my_password' : password})
opener.open(url, login_data)
page_to_launch = 'my_authenticated_url'
webbrowser.open(page_to_launch, new=1, autoraise=1)
Run Code Online (Sandbox Code Playgroud)
我可以登录并将经过身份验证的页面转储到标准输出,或者在不识别 cookie 的情况下启动登录页面,但我无法在登录后启动我想要的页面。感谢帮助。
cookiejar ×13
python ×7
cookies ×6
cookielib ×3
go ×2
mechanize ×2
android ×1
asp.net ×1
browser ×1
c# ×1
curl ×1
facebook ×1
flutter ×1
http-post ×1
httpcookie ×1
httplib2 ×1
httprequest ×1
javascript ×1
linux ×1
node.js ×1
okhttp ×1
persistence ×1
php ×1
pickle ×1
setcookie ×1
soap ×1
suds ×1
urllib ×1